代码之家  ›  专栏  ›  技术社区  ›  Alex

转义数据-条带斜杠、条带标记

  •  8
  • Alex  · 技术社区  · 14 年前

    为什么很多人在字符串上同时使用这两个函数? 我看到很多 stripslashes(strip_tags($field));

    不是 strip_tags 足以过滤任何xss之类的东西吗?

    5 回复  |  直到 14 年前
        1
  •  10
  •   user229044    14 年前

    转义数据与此无关 strip_tags stripslashes . 这些函数过滤字符串中的某些字符,而“转义”则对某些字符进行编码,这样浏览器或数据库就不会解释这些字符。

    条形标签 从浏览器中删除发送到PHP的字符串中的HTML标记。更好的是,您还可以安全地存储相同的数据,而不必传递这些数据 条形标签 如果你使用 htmlspecialchars

    stripslashes 从字符串中删除斜杠,并且只需要在启用“magic quotes”时担心它。这比早期的PHP开发人员天真地假设来自浏览器的每一条数据都是为一个数据库准备的,并且开发人员不可能被信任来逃避数据库本身的时候要慢得多。

        2
  •  5
  •   Community CDub    7 年前

    不。过滤XSS的唯一安全方法是 htmlspecialchars() ,尽管我看到了许多使用建议 strip_tags() 此外。

    参见本问题的讨论: Is preventing XSS and SQL Injection as easy as does this…

    stripslashes 在这种情况下应该这样做,我不知道。这可能是试图消除现在被弃用的 magic quotes

        3
  •  2
  •   GWW    14 年前

    当magic quotes打开时,它将自动转义POST、GET等变量中的引号。在使用数据之前,条带斜杠会删除这些数据。条形标签 删除所有html标记。

        4
  •  1
  •   Mr. Llama    14 年前

    strip_tags()

    请考虑以下几点:

    $str = "' onclick='javascript:alert(0);' alt='";
    echo "<a href='". strip_tags($str) ."'></a>";
    // output is <a href='' onclick='javascript:alert(0);' alt=''></a>
    

        5
  •  1
  •   KoZm0kNoT    11 年前

    我注意到strip_tags()在引用字符时添加反斜杠。我已经检查过并且magic_quotes_gpc没有打开。OP最初的问题是,为什么有些编码人员会用stripsalashes()包围strip_tags(),这就是我这样做的原因,因为我不希望数据库存储双反斜杠,因为我已经在将数据保存到数据库之前准备好了数据。