对于一个只是试图保护自己免受 XSS 攻击的 PHP 应用程序,应该在什么阶段htmlentities()
调用该函数?它应该在初始用户输入时调用,还是在输出数据的每个页面渲染时调用?
如果我htmlentities()
在用户输入上使用,我最终会在数据库中存储更多的数据。但是,从长远来看,我节省了 CPU 周期,因为我只需要在输入上执行转换,而不必再在该数据的后续输出上执行。
我应该注意,我看不到任何必须在我的应用程序中存储 HTML 输入数据的可预见情况,因此使用htmlentities()
纯粹是为了 XSS 保护。万一我确实需要原始 HTML,我可以简单地调用html_entity_decode()
reverse htmlentities()
。此外,它使我免于忘记调用htmlentities()
页面渲染并意外地将 XSS 漏洞插入到我的应用程序中。
我玩弄了使用 Facebook 的 XHP 扩展的想法,但是 XML 解析会产生相当多的开销,这超出了我对我的应用程序的习惯。
摘要:我应该htmlentities()
在输入上使用还是在输出上使用?对于这种情况,普遍接受的方法是什么?