addslashes()在HTML属性中防止XSS是否安全?


Is addslashes() safe to prevent XSS in a HTML attribute?

我不得不工作在一个旧的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') ?>">