Php 严重重音混淆XSS攻击可以';我不能逃之夭夭
我在这里有一个清除字符串的函数Php 严重重音混淆XSS攻击可以';我不能逃之夭夭,php,xss,Php,Xss,我在这里有一个清除字符串的函数 function clean($str) { $str = htmlspecialchars(strip_tags(trim(mb_convert_encoding($str, 'UTF-8', 'UTF-8'))), ENT_QUOTES, 'UTF-8'); return $str; } 现在,我检查了可能的XSS攻击,这一次在上运行正常,但是当我将元素交换到 JS是使用以下命令执行的 $attr = clean("javascript:alert(\"
function clean($str) {
$str = htmlspecialchars(strip_tags(trim(mb_convert_encoding($str, 'UTF-8', 'UTF-8'))), ENT_QUOTES, 'UTF-8');
return $str;
}
现在,我检查了可能的XSS攻击,这一次在
上运行正常,但是当我将元素交换到
JS
是使用以下命令执行的
$attr = clean("javascript:alert(\"RSnake says, 'XSS'\")");
$str = "<iframe src=\"$attr\">";
请尝试以下操作:
<?php
function clean($url) {
if (!filter_var($url, FILTER_VALIDATE_URL))
return false;
return $url;
}
$attr = clean("javascript:alert(\"RSnake says, 'XSS'\")");
$str = "<iframe src=\"$attr\">";
// $str = "<img src=\"$attr\">";
echo($str);
是的,我试图解决这个问题,但我记得有人说过,同时使用htmlspec和htmllent会在某种转换过程中产生问题,就像它会将
转换为
或者something@AXAI如果只想显示字符串,这样就没有问题了,但如果您想将字符串恢复为默认形式,可能会导致一些问题。否则就可以了。HTML解析器将把实体转换回常规字符,然后再将它们传递给URL解析器,这样根本没有帮助。htmlspecialchars())
-双重编码没有帮助。它只会破坏数据。@Quentin by破坏数据
这是否意味着它会破坏任何不干净的字符串?比如,如果src=”“
我希望版主只放置有效的URL,比如www.domain.com/something.php?sa=&pa=
和任何怀疑被掩埋的内容,或者它会破坏整个元素的形成?
<?php
function clean($url) {
if (!filter_var($url, FILTER_VALIDATE_URL))
return false;
return $url;
}
$attr = clean("javascript:alert(\"RSnake says, 'XSS'\")");
$str = "<iframe src=\"$attr\">";
// $str = "<img src=\"$attr\">";
echo($str);