JSP Struts過(guò)濾xss攻擊的解決辦法
本方案采用struts2的攔截器過(guò)濾,將提交上來(lái)的參數(shù)轉(zhuǎn)碼來(lái)解決。
配置struts.xml
package name="default" namespace="/"
extends="struts-default, json-default">
!-- 配置攔截器 -->
interceptors>
!-- 定義xss攔截器 -->
interceptor name="xssInterceptor" class="...此處填寫(xiě)攔截器類(lèi)名">/interceptor>
!-- 定義一個(gè)包含xss攔截的攔截棧 -->
interceptor-stack name="myDefault">
interceptor-ref name="xssInterceptor">/interceptor-ref>
interceptor-ref name="defaultStack">/interceptor-ref>
/interceptor-stack>
/interceptors>
!-- 這個(gè)必須配置,否則攔截器不生效 -->
default-interceptor-ref name="myDefault">/default-interceptor-ref>
action>
...此處省略n個(gè)action
/action>
/package>
Java代碼,攔截器實(shí)現(xiàn)類(lèi)
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();
MapString, Object> map = actionContext.getParameters();
for (Map.EntryString, Object> entry : map.entrySet()) {
String value = ((String[])(entry.getValue()))[0];
entry.setValue(StringEscapeUtils.escapeHtml4(value));//將提交上來(lái)的字符串進(jìn)行轉(zhuǎn)碼
//System.out.println((entry.getValue()));
}
return invocation.invoke();
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
您可能感興趣的文章:- 用js屏蔽被http劫持的浮動(dòng)廣告實(shí)現(xiàn)方法
- JSP使用過(guò)濾器防止Xss漏洞
- JS寫(xiě)XSS cookie stealer來(lái)竊取密碼的步驟詳解
- JSP過(guò)濾器防止Xss漏洞的實(shí)現(xiàn)方法(分享)
- JSP安全開(kāi)發(fā)之XSS漏洞詳解
- 防止xss和sql注入:JS特殊字符過(guò)濾正則
- 詳解前端安全之JavaScript防http劫持與XSS