首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >2011年在PHP中使用XSS的方法?

2011年在PHP中使用XSS的方法?
EN

Stack Overflow用户
提问于 2011-02-22 04:49:51
回答 4查看 592关注 0票数 16

我正在努力了解可用和适当的应对措施的最新情况,以积极减少2011年被XSS列车撞到的机会。

我用谷歌搜索了一下,发现网上有很多库可以帮助解决XSS问题,这些库自豪而大胆地指出“XSS/SQL注入问题到此为止”。

我发现这些库至少有以下两种症状之一:

  • 图书馆很大,可能有它自己的心跳。
  • 图书馆来自海滩男孩在收音机上玩耍的时代。

PHP出现已经有一段时间了,filter_var等函数也伴随着这个远非正统的strip_tags。我远不是这些安全问题的专家,真的不知道它是否能确保未来的良好睡眠。

我在2011年减少XSS注入的最好机会是什么,而不会使我的代码膨胀,不管有没有过时的库?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-22 04:52:17

最好的解决方案是使用模板引擎,它不允许您将任何数据输出为纯HTML,除非您显式地告诉它这样做。如果您必须手动转义,那么很容易忘记一些东西并使自己暴露在XSS攻击的风险之下。

如果你没有一个真正的模板entine,那就使用htmlspecialchars()

票数 7
EN

Stack Overflow用户

发布于 2011-02-22 11:10:36

我完全同意Matti Virkkunen的观点,或者我认为Matti的回答暗示了什么,所以让我大声而明确地说:nothing将“删除所有恶意代码”。您永远不会知道数据将如何在应用程序的其他部分或将来使用。您可以为SQL“净化”它,但是您不应该把任何未转义的东西放在SQL中的第一位。您可以为HTML“净化”它,但是您永远不应该在HTML中包含任何未转义的数据。您可以将其"purify“到shell脚本中的awk参数中,但是……你明白了吧。

即使是停止问题也是无法确定的,更不用说任何给定代码或数据的恶意意图了。从长远来看,任何输入“净化”的方法都是无用的。需要的是正确的数据转义。一直都是。因此,如果要在SQL查询中包含任何内容,请将其作为数据包含,而不是作为代码包含。如果要在博客帖子中打印用户名,请将其包括为文本而不是HTML。如果用户名是HTML编码的或作为文本节点动态添加到DOM中,那么任何人都不会因为看到来自“or alert('XSS');”的注释而受到伤害。

所有的自动净化工具只不过是添加到您的程序中的一粒魔法灰尘,以确保它的安全性。他们说:“在这里--我们已经让你所有的数据变得纯洁,所以你现在可以安全地使用它,而不需要担心数据的边界!”这只会导致一种错误的安全感。作为开发人员,我们需要对数据的输出负责,永远不要认为一切都很好,因为我们有一个工具可以让我们所有的数据“安全”,无论这在输入时意味着什么。

票数 5
EN

Stack Overflow用户

发布于 2011-06-21 19:15:46

essential security rules的规则3b几乎就是它的全部。在输出之前,坚持一致地转换用户输入,你就是安全的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5071116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档