首页 > 解决方案 > 拒绝使用@

问题描述

我有一个短网址网站,我只允许用户从一个特定网站创建短网址。有些人在缩短网址时试图通过在网址之间使用@来滥用这一点,以进行错误的重定向。如果您尝试输入“https://idg.se@stackoverflow.com”,您将最终进入 stackoverflow,现在是 idg.se。尝试将不带“”的“https://idg.se@stackoverflow.com”粘贴到浏览器中,看看会发生什么。

所以问题是人们现在正在缩短“https://example.com@malware.com”,我想要一种方法来阻止这种情况,即不允许使用@。

目前,我试图复制我的函数以获得有效的 url,以检查其中是否有 @,而目前我只会以“URL 中的无效字符”结束,无论我输入表单以创建一个 shorturl。

任何人有任何想法如何让它工作?基本上我不希望任何人能够使用@。

职能

function DenySpeciallCharacters($url)
{
    $strAllow2 = 'example.com';
    $strBase2  = getBaseUrl($url);
    if(preg_match('@', $url, $strAllow2) === false)
    {
        return true;
    }

}

    function denyNonValidUrl($url)
    {
        $strAllow = 'example.com'; 
        $strBase  = getBaseUrl($url);
        if(strpos($url, $strAllow) === false)
        {
            return true;
        }
                
    }

索引文件

if (!isErrors())


//do not allow non special characters
            elseif(DenySpeciallCharacters($longUrl) )
            {
                    setError("Invalid Character in the URL");
            }

标签: php

解决方案


修改功能

function DenySpeciallCharacters($url){
    if(strpos($url,'@') !== false){
        return true;
    }else{
        return false;
    }
}

strpos 函数检查 url 字符串中 @ 的出现,如果找到,则条件返回 true。


推荐阅读