一尘不染

在PHP站点中避免xss攻击的最佳实践是什么

php

我已配置PHP,以便打开魔术引号,并关闭全局寄存器。

我尽我所能一直为从用户输入派生的任何输出调用htmlentities()。

我有时也会在数据库中查找xss附带的常见信息,例如…

<script

我还应该做些什么,以及如何确保自己 一直 想做的事情 始终 完成。


阅读 295

收藏
2020-05-26

共1个答案

一尘不染

为了成功防止XSS,逃避输入并不是最好的选择。输出也必须转义。如果您使用Smarty模板引擎,则可以使用|escape:'htmlall'修饰符将所有敏感字符转换为HTML实体(我使用自己的|e修饰符,这是上面的别名)。

我输入/输出安全性的方法是:

  • 存储未修改的用户输入(输入不转义HTML,仅通过PDO准备好的语句完成DB感知转义)
  • 在输出时进行转义,具体取决于您使用的输出格式(例如HTML和JSON需要不同的转义规则)
2020-05-26