addslashes()是否可以安全地阻止HTML属性中的XSS?

时间:2011-12-02 08:45:21

标签: php javascript security xss

我不得不处理以前的开发人员离开的旧网络应用程序。它使用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,我相信它很脆弱。

2 个答案:

答案 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') ?>">