在PHP站点中避免xss攻击的最佳实践是什么 [已关闭]
我配置了PHP,以便魔术报价打开并且注册全局关闭。
我尽我所能总是调用htmlentities()来表示我输出的从用户输入派生的任何内容。
我也偶尔会搜索我的数据库,以获取xss中使用的常见内容,例如...
<script
我还应该做什么,我怎么能确保我试图做的事情总是完成的。
我配置了PHP,以便魔术报价打开并且注册全局关闭。
我尽我所能总是调用htmlentities()来表示我输出的从用户输入派生的任何内容。
我也偶尔会搜索我的数据库,以获取xss中使用的常见内容,例如...
<script
我还应该做什么,我怎么能确保我试图做的事情总是完成的。
转义输入并不是成功进行 XSS 预防的最佳方法。此外,输出也必须转义。如果您使用Smarty模板引擎,则可以使用修饰符将所有敏感字符转换为HTML实体(我使用自己的修饰符,这是上述的别名)。|escape:'htmlall'
|e
我的输入/输出安全方法是:
我认为,在输入过程中不应该逃避任何东西,而应该在输出时逃脱任何东西。由于(大多数时候)您不能假设您知道该数据的去向。例如,如果您的表单包含稍后出现在您发送的电子邮件中的数据,则需要不同的转义(否则恶意用户可能会重写您的电子邮件标头)。
换句话说,您只能在数据“离开”应用程序的最后一刻进行转义:
做空:
如果您在输入层转义数据(或者您需要再次对数据进行转义等),则会出现 Esp #3。
PS:我会建议不要使用magic_quotes,这些都是纯粹的邪恶!