我不得不工作在一个旧的web应用程序,以前的开发人员离开。它正在使用addslashes()来防止http属性上的XSS。
下面是一个例子:
<?php
// all $_POST vars are put through addslashes()
echo "<input type='hidden' value='" . $_POST['id'] . "' />";
?>
这个易受XSS攻击吗?javascript是否可以像在src属性中一样在value属性中运行,例如src='javascript:alert(99)'。或者可以打破值属性,然后可以插入脚本标签?
编辑:感谢昆汀,我相信它是脆弱的。
addslashes()在HTML属性中防止XSS是安全的吗?
这是非常无效的。
这个易受XSS攻击吗?
是的。
没有javascript是否可以像在src属性中一样在value属性中运行?例如,src='javascript:alert(99)'.
或者可以将value属性拆分,然后插入脚本标签吗?
数据只需要包含一个"
和属性。
当你想在一个属性值中插入一个任意字符串时,使用htmlspecialchars
addslashes()
不适合此任务。使用htmlspecialchars()
或htmlentities()
代替,例如
<input type="hidden"
value="<?php echo htmlspecialchars($_POST['id'], ENT_QUOTES, 'UTF-8') ?>">