2022
我们一起努力

url存在sql注入漏洞如何解决

url存在sql注入漏洞的解决方法:

使用拦截器进行对request的host进行了验证,例如:

package com.XXX.interceptoer;

import com.jfinal.aop.Interceptor;

import com.jfinal.aop.Invocation;

import javax.servlet.http.HttpSession;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

/**

* 未登录用户拦截

*/

public class AuthInterceptor implements Interceptor {

@Override

public void intercept(Invocation invocation) {

// 头攻击检测

String requestHost = invocation.getController().getRequest().getHeader("host");

HttpServletResponse response = invocation.getController().getResponse();

response.addHeader("Set-Cookie", " Path=/; HttpOnly"); //Cookie 缺少 HttpOnly属性

response.addHeader("X-Frame-Options", "SAMEORIGIN"); //防止 x-frame-options 缺失

if (requestHost != null && !isWhite(requestHost)) {

response.setStatus(403);

return;

}else {

HttpSession session = invocation.getController().getSession();

String url = invocation.getController().getRequest().getRequestURI();

if (session.getAttribute("user") != null || checkUrl(url)) {

if (url.endsWith("/") && session.getAttribute("user") != null) {

try {

invocation.getController().getResponse().sendRedirect("/admin");

} catch (IOException e) {

e.printStackTrace();

}

} else

invocation.invoke();

} else {

try {

invocation.getController().getResponse().sendRedirect("/");

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

private boolean checkUrl(String url) {

return "/".equals(url)

|| url.contains("/XXX/XXX");

}

/**

* 是否在白名单内

* @param host

* @return

*/

private boolean isWhite(String host) {

List whiteList = new ArrayList();

whiteList.add("localhost:8088");

whiteList.add("127.0.0.1:8088");

for (String str : whiteList) {

if (str != null && str.equals(host)) {

return true;

}

}

return false;

}

}

赞(0)
文章名称:《url存在sql注入漏洞如何解决》
文章链接:https://www.fzvps.com/71566.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!