如何防止服务器端php的html或javascript注入

时间:2011-05-06 04:12:46

标签: php xss

希望这不是重复,我找不到关于这个主题的原始问题。如果您有一个供用户输入数据的区域,如何在不插入javascript或html的情况下存储和检索数据?

例如,假设用户正在撰写论坛帖子。他们决定编写一个html列表或javascript函数,在查看帖子时运行。当您在服务器端收到输入时,如何减轻这种影响?特别是PHP的服务器端。

  • 根据模式删除部分字符串数据?
  • 在条目周围使用html标签,如

由于

4 个答案:

答案 0 :(得分:3)

您只需将<替换为&lt;即可。

答案 1 :(得分:2)

您必须删除或翻译其帖子的违规部分。您可以在帖子进入时执行一次,并将已翻译的帖子保存在数据库中,或者您可以在每次显示帖子时执行此操作,并将原始帖子存储在数据库中。这两种方法都有其优点和缺点。

关于如何剥离坏东西,使用简单的匹配来替换所有&lt;和&gt;与&amp; lt;和&amp; gt;很长的路要走 - 但除此之外还有很多事要做。

答案 2 :(得分:2)

我使用HTML Purifier来删除我不想要的位,并留下我所做的位。默认规则非常好,但如果您需要,它可以提供极大的灵活性。

答案 3 :(得分:2)

有很多关于防止代码注入的教程。微软非常全面found here

对于html注入,取决于你想要多么彻底,你通常可以放入一个字符串解析器来检查&lt;&gt;并删除它们,没有例外。