JSP Struts过滤xss攻击的解决办法
程序员文章站
2023-11-21 21:05:52
jsp struts过滤xss攻击的解决办法
本方案采用struts2的拦截器过滤,将提交上来的参数转码来解决。
配置struts.xml
jsp struts过滤xss攻击的解决办法
本方案采用struts2的拦截器过滤,将提交上来的参数转码来解决。
配置struts.xml
<package name="default" namespace="/" extends="struts-default, json-default"> <!-- 配置拦截器 --> <interceptors> <!-- 定义xss拦截器 --> <interceptor name="xssinterceptor" class="...此处填写拦截器类名"></interceptor> <!-- 定义一个包含xss拦截的拦截栈 --> <interceptor-stack name="mydefault"> <interceptor-ref name="xssinterceptor"></interceptor-ref> <interceptor-ref name="defaultstack"></interceptor-ref> </interceptor-stack> </interceptors> <!-- 这个必须配置,否则拦截器不生效 --> <default-interceptor-ref name="mydefault"></default-interceptor-ref> <action> ...此处省略n个action </action> </package>
java代码,拦截器实现类
import java.util.map; import org.apache.commons.lang3.stringescapeutils; import com.opensymphony.xwork2.actioncontext; import com.opensymphony.xwork2.actioninvocation; import com.opensymphony.xwork2.interceptor.abstractinterceptor; public class xssinterceptor extends abstractinterceptor{ @override public string intercept(actioninvocation invocation) throws exception { // todo auto-generated method stub actioncontext actioncontext = invocation.getinvocationcontext(); map<string, object> map = actioncontext.getparameters(); for (map.entry<string, object> entry : map.entryset()) { string value = ((string[])(entry.getvalue()))[0]; entry.setvalue(stringescapeutils.escapehtml4(value));//将提交上来的字符串进行转码 //system.out.println((entry.getvalue())); } return invocation.invoke(); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!