今天谷歌搜索我找不到样本或提及最佳实践:如何在Struts2中转义用户输入。 当然我可以在validate()方法上手动转换字符,但它看起来太明显了。那么可能存在一些自动化以避免代码/脚本注入?
答案 0 :(得分:0)
基本功能/良好实践:默认情况下property tag会转义html特殊字符,所以只要你保持过滤(参见'escape'和'escapeJavascript'属性),你就很安全了 - 在这方面。
对于检查webapp中所有用户输入的更一般情况(理论上,你可以扩展param拦截器或组成另一个拦截器或过滤器),很少可能建立一些通用规则(哪些字符/模式被禁止?)和做什么(默默地删除它们或抛出一些验证错误/警告?)。
也许您正在考虑更具体的用户输入案例,这些案例要在网页中显示(通常是用户评论),并且可以接受一组受限制的html标签。在这种情况下,我会特别处理这些字段,可能是通过编写一些实用程序清洁程序代码并将其插入相应的setter或getter中。一个更复杂的解决方案是为这些字段定义自己的类(比如UserComment) - 该类基本上会包装一个String,然后我会编写一个相应的Type Converter来对清理负责。同样,您必须决定在禁止的字符/标签的情况下采取什么行动。