addslashes()是否安全以阻止HTML属性中的XSS?
问题描述:
我不得不在旧开发人员离开的旧Web应用程序上工作。它使用addslashes()来阻止HTTML属性上的XSS。addslashes()是否安全以阻止HTML属性中的XSS?
下面是一个例子:
<?php
// all $_POST vars are put through addslashes()
echo "<input type='hidden' value='" . $_POST['id'] . "' />";
?>
这是容易被XSS?有没有什么方法的JavaScript可以运行在一个值属性,就像它可以在src属性中,例如,src ='javascript:alert(99)'。或者可以将value属性分解出来,然后插入脚本标记?
编辑:感谢昆汀,我认为它是脆弱的。
答
是和addslashes()的安全,以防止XSS的HTML属性?
这是非常无效的。
这是脆弱的XSS?
是的。
是否有任何方式的JavaScript可以以值属性喜欢它可以在例如一个src属性运行,SRC =“JavaScript的:警报(99)”。
没有
,或者可以value属性被打破了,然后脚本标记可以被插入?
该数据只需包括一个"
并且属性被打破。
使用htmlspecialchars
当你想插入任意字符串到一个属性值。
答
addslashes()
不适用于此任务。使用htmlspecialchars()
或htmlentities()
代替,如
<input type="hidden"
value="<?php echo htmlspecialchars($_POST['id'], ENT_QUOTES, 'UTF-8') ?>">
使用双引号或单引号不会突破,它只是逃脱。它真的很容易受到XSS? – MrCode
@ user995579 - 它不会被转义。它之前只有一个斜线。这没有任何意义,然后把它放在HTML之前。 – Quentin
是的,它在它之前放了一个斜线。这是保持所有用户输入的值属性,所以我不认为它可以被打破。 – MrCode