我不得不处理以前的开发人员离开的旧网络应用程序。它使用addslashes()来防止HTTML属性上的XSS。
以下是一个例子:
<?php
// all $_POST vars are put through addslashes()
echo "<input type='hidden' value='" . $_POST['id'] . "' />";
?>
这是否容易受到XSS攻击?有没有什么方法可以在一个值属性中运行javascript,就像在src属性中一样,例如,src ='javascript:alert(99)'。或者可以从中删除value属性,然后插入脚本标记吗?
编辑:感谢Quentin,我相信它很脆弱。
答案 0 :(得分:8)
addslashes()是否可以安全地阻止HTML属性中的XSS?
非常无效。
这是否容易受到XSS的攻击?
是
javascript是否可以像在src属性中那样在值属性中运行,例如,src ='javascript:alert(99)'。
没有
或者可以从中删除value属性,然后插入脚本标记吗?
数据必须包含"
,并且该属性将被删除。
如果要将任意字符串插入属性值,请使用htmlspecialchars
。
答案 1 :(得分:3)
addslashes()
不适合此任务。请改用htmlspecialchars()
或htmlentities()
,例如
<input type="hidden"
value="<?php echo htmlspecialchars($_POST['id'], ENT_QUOTES, 'UTF-8') ?>">