![]() |
1
9
通常在
显示
,而不是在
商店
. 在JSP中,您可以使用
JSTL
(刚刚下降
jstl-1.2.jar
在里面
或
就是这样。如果您在处理输入和/或在数据库中存储的过程中也这样做,那么它将分布在业务代码和/或数据库中。你不应该这样做,这只是维护上的问题,当你在不同的地方(例如
更新 :您已经发布了4个关于同一主题的主题:
我只会警告你:是的 不 需要在servlet/filter/javacode/database/whatever中对其进行转义。你只不过是不必要的过度复杂化。只需在显示时退出即可。这就是全部。 |
![]() |
2
5
不是内置的,但请查看 owasp esapi filter 它应该做你想做的以及更多。它是一个伟大的开源安全库,由OWASP的聪明人和女孩编写(“开放式Web应用程序安全项目”)。 |
![]() |
3
5
我不得不说,我不同意这个公认的答案,即显然是通过输出来防止XSS。 我相信更好的方法是对输入进行消毒,这可以通过一个方面很容易实现,这样您就不必把它放在任何地方。 消毒不同于逃跑 . 你不能盲目逃避:
我建议使用带有方面的OWASP反弹药库或@futta建议的过滤器。 下面是我使用SpringMVC注释来清理用户输入的一个方面(因为我们将它用于所有输入)。
对于非富文本字段,您仍然需要在输出时进行转义,但您的数据库中永远不会(而且我认为应该永远不会)有恶意数据。 如果您不想对某些输入进行清理,您可以始终进行注释,使方面不进行清理。 另一个不希望数据库中存在恶意数据的原因是,如果您向Internet提供任何排序RESTAPI。您可以在输出上做正确的事情,但您的mashup伙伴可能不会。 清除输入或阻止输入是可以的(我的意思是大多数人都有文件上载限制?)。Web应用程序中的大多数字段不需要输入脚本标记,更重要的是,大多数用户可能不需要或不想输入脚本标记(明显的例外是堆栈溢出答案)。 |