我正在编写一个java类,它将由servlet过滤器调用,并检查基于Struts的java Web应用程序的注入攻击尝试和XSS.InjectionAttackChecker类使用regex和java.util.regex.Pattern类来根据regex中指定的模式验证输入.
话虽如此,我有以下问题:
应该阻止所有特殊字符和字符模式(例如<>,., - ,<=,==,> =)以防止注入攻击.
是否存在我可以使用的现有正则表达式模式?
我必须在某些特定情况下允许一些特殊字符模式,一些示例值(允许)是(使用'pipe'|字符作为不同值的分隔符)*Atlanta | #654,BLDG 8#501 | 单纯疱疹:慢性溃疡(> 1个月的持续时间)或支气管炎,肺炎或食道炎 FUNC&COMP(date_cmp),"NDI&MALKP&HARS_IN(icd10,yes)".我应该采取什么策略,以便可以防止注入攻击和XSS,但仍然允许这些字符模式.
我希望我已经清楚地提到了这个问题.但如果我没有,我道歉只是我的第二个问题.如果需要澄清,请告诉我.
基于您的问题,我假设您正在尝试过滤不良值.我个人认为这种方法可以非常快速地变得非常复杂,并建议将编码值作为替代方法.以下是关于该主题的IBM文章,其中列出了两种方法的优缺点,http://www.ibm.com/developerworks/tivoli/library/s-csscript/.
要避免SQL注入攻击,只需使用预准备语句而不是创建SQL字符串.