php - 拒绝使用@
问题描述
我有一个短网址网站,我只允许用户从一个特定网站创建短网址。有些人在缩短网址时试图通过在网址之间使用@来滥用这一点,以进行错误的重定向。如果您尝试输入“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");
}
解决方案
修改功能
function DenySpeciallCharacters($url){
if(strpos($url,'@') !== false){
return true;
}else{
return false;
}
}
strpos 函数检查 url 字符串中 @ 的出现,如果找到,则条件返回 true。
推荐阅读
- python - 将列中的 0 替换为 pandas 中的 groupby 中位数
- memory-management - (DX12) 2D-Texture UAV 的回读缓冲区
- postgresql - postgresql 插入整数 PK nextval
- angular - 角度,参考变量不刷新
- excel - 性能问题 - 根据列标题重新排列列
- swift - SwiftUI 中的切换调用问题中的额外参数“isOn”
- angular - Ionic- ionic serve 显示空白屏幕 Ionic- 关键“viewport-fit”未被识别和忽略
- c - 多文件c项目中的函数声明问题
- r - 如何将复杂的宽表转换为长表
- javascript - JavaScript/CRM 问题:需要帮助根据文本字段中显示的内容设置过滤选项