2013-04-18 68 views
0

我正在为我的Web应用程序构建基本安全层。我正在验证我正在采取的步骤。目前的焦点是XSS,所以我在这篇文章中没有触及数据库。这是我迄今所做的:保护我的Web应用程序免受恶意输入

  1. 用htmlspecialchars()所有的用户输入
  2. 黑名单某些关键字{“”,“”,“文/ JavaScript的”}:我使用的preg_replace与子这些话“”而是。
  3. 输出转义所有动态内容。

所有这些看起来像一个非常平凡的安全层。谁能推荐更好的策略?

回答

1

你的方法太简单了。 hmmlspecialchars在任何情况下都无济于事。

这是一个非常好的关于XSS的备忘单,以及当您将字符串转换为HTML时出现的问题。

https://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29

黑名单有它的缺点也。有些浏览器例如可以解析

text/javascript 

text/java 
     script 

以同样的方式。新的行和空格从后者中删除,因此它被解释为像第一个。所以黑名单不会是防弹的方法。

最好的策略是使用一些模板库,它们已经为你处理所有这些。库必须知道字符串的上下文。元素值需要与属性值不同的转义。

相关问题