gpt4 book ai didi

php - 使用 strip_tags() 防止 XSS?

转载 作者:行者123 更新时间:2023-12-02 13:35:34 27 4
gpt4 key购买 nike

我有一个 PHP Web 应用程序。我不想允许用户将 HTML 发布到我的网站。

如果我只是运行 strip_tags () 在保存到我的数据库之前的所有数据上,将 strip_tags ()足以防止XSS吗?

我问这个问题是因为我在阅读 documentation of strip_tags 时不清楚如果XSS被阻止了。浏览器似乎存在一些错误,允许 <0/script> (是的,零)作为有效的 HTML。

更新

我意识到我可以简单地运行 htmlspecialchars所有输出的数据;然而,我的想法是 - 因为我一开始就不想允许 HTML,所以在保存到数据库之前一劳永逸地清理我的数据会更容易(并且在学术上更好),然后每次都必须担心无论数据安全与否,我都会输出数据。

最佳答案

我强烈不同意它“在学术上更好”。

  • 它会破坏用户输入(想象一下,如果 StackOverflow 从所有标签中“清除”帖子,那么该讨论将变得毫无用处)。

  • 在 HTML 中插入的仅删除标签的文本将无效。 HTML 需要 &也可以逃脱。

  • 它甚至在 HTML 中也不安全! strip_tags()不足以保护属性中的值,例如 <input value="$foo">可能会被$foo利用=" onfocus="evil() (不需要<>!)

因此,正确的解决方案是根据您生成的语言的要求转义数据。当您有纯文本并生成 HTML 时,您应该使用 htmlspecialchars() 将文本转换为 HTML或诸如此类。当您生成电子邮件时,您应该将文本转换为引用的可打印格式,等等。

关于php - 使用 strip_tags() 防止 XSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605629/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com