我只是想在xss上运动,我希望警报框弹出回声,这应该对回声起作用。我正在根据概念进行练习,而且我对htmlspecialchars的使用有误,因为它很容易受到xss的攻击。然而,这不是真的有效,我不明白为什么。这是我的代码
$name=htmlspecialchars($_GET['myname']);
echo "<HTML><body>";
echo '<form action="">';
echo "name: <input type='text' name='myname' ><br>";
echo "<input type='submit' ></form>";
echo $name; // here I want the xss to execute a popup box
echo "</HTML></body>";
输入脚本如下所示。
<script>alert();</script>
我也尝试了很多选择。脚本显示为我键入它并且没有警告框。
答案 0 :(得分:3)
但是,你没有。您已经完全按照它应该使用的我正在根据概念进行练习,而且我对htmlspecialchars的使用有误,因为它很容易受到xss的攻击。</ p>
htmlspecialchars
使用了,因此在这里可以防止XSS。
答案 1 :(得分:2)
我错误地使用了htmlspecialchars,它容易受到xss
的攻击
对于您拥有的其余代码,您的使用并没有错,并且它对于您拥有的代码不易受XSS攻击。
仅使用一个参数htmlspecialchars
使用默认设置,这样可以使<
,"
,>
和&
字符安全。
当内容输出到您可以放置文本节点的地方时,这绝对没问题。
保护HTML的主要情况是:
'
而非"
当您需要ENT_QUOTES
时,'
会被转义。否则你最终会得到:
$user_input = "' onmouseover='alert(1)'";
?>
<body data-userinput='<?php echo $user_input; ?>'>
...所以可以添加触发JS的新属性。
(注意,如果要将数据插入JS或URL,还需要不同的卫生处理技术)。