php - 通过url防止xss攻击(PHP)

标签 php xss url-validation

我正在尝试通过 url 避免 XSS 攻击
网址:http://example.com/onlineArcNew/html/terms_conditions_1.php/%22ns=%22alert%280x0000DC%29 我试过了

var_dump(filter_var('http://10.0.4.2/onlineArcNew/html/terms_conditions_1.php/%22ns=%22alert%280x0000DC%29', FILTER_VALIDATE_URL));

和其他使用正则表达式但根本不起作用的 url_validation。 上面的链接显示了所有信息,但我的 css 和一些 java 脚本函数不起作用。 请提出最佳解决方案...

最佳答案

尝试使用 FILTER_SANITIZE_SPECIAL_CHARS相反

$url = 'http://10.0.4.2/onlineArcNew/html/terms_conditions_1.php/%22ns=%22alert%280x0000DC%29';

// Original
echo $url, PHP_EOL;

// Sanitise
echo sanitiseURL($url), PHP_EOL;

// Satitise + URL encode
echo sanitiseURL($url, true), PHP_EOL;

输出

http://10.0.4.2/onlineArcNew/html/terms_conditions_1.php/%22ns=%22alert%280x0000DC%29
http://10.0.4.2/onlineArcNew/html/terms_conditions_1.php/"ns="alert(0x0000DC)
http%3A%2F%2F10.0.4.2%2FonlineArcNew%2Fhtml%2Fterms_conditions_1.php%2F%26%2334%3Bns%3D%26%2334%3Balert%280x0000DC%29

使用的函数

function sanitiseURL($url, $encode = false) {
    $url = filter_var(urldecode($url), FILTER_SANITIZE_SPECIAL_CHARS);
    if (! filter_var($url, FILTER_VALIDATE_URL))
        return false;
    return $encode ? urlencode($url) : $url;
}

关于php - 通过url防止xss攻击(PHP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16896009/

相关文章:

Javascript url 验证允许相对和绝对 url

java - 将域添加到 apache.commons 中的 UrlValidator

php - 从保管箱下载文件到服务器

php - Flash/Actionscript 是 css 和 javascript 的替代品吗?

javascript - 如何在不使用 cookie 的情况下处理单页应用程序中的 CSRF 和 XSS 攻击

java - 如何防止XSS攻击

php - 如何选择从mysql以php形式获取的值来更新数据

php - guest 用户的授权和策略

asp.net - 如何防止 Asp.NET 中的 XSS

node.js - 我看似有效的 URL 在本地解析,但在部署到 heroku 上时失败