feat: 提交项目代码

This commit is contained in:
super_liu
2021-05-31 14:56:05 +08:00
parent d50bb875cb
commit 3ed9ca235a
234 changed files with 27792 additions and 0 deletions
@@ -0,0 +1,6 @@
package com.adc.da.base.entity;
public class BaseEntity {
public BaseEntity() {
}
}
@@ -0,0 +1,72 @@
package com.adc.da.base.entity;
import java.util.List;
public abstract class TreeEntity<T extends TreeEntity> extends BaseEntity {
protected String id;
protected String name;
protected String parentId;
protected String parentIds;
protected T parent;
protected List<T> childList;
protected Integer delFlag;
public TreeEntity() {
}
public String getId() {
return this.id;
}
public void setId(String id) {
this.id = id;
}
public String getParentId() {
return this.parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getParentIds() {
return this.parentIds;
}
public void setParentIds(String parentIds) {
this.parentIds = parentIds;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public List<T> getChildList() {
return this.childList;
}
public void setChildList(List<T> childList) {
this.childList = childList;
}
public T getParent() {
return this.parent;
}
public void setParent(T parent) {
this.parent = parent;
}
public Integer getDelFlag() {
return this.delFlag;
}
public void setDelFlag(Integer delFlag) {
this.delFlag = delFlag;
}
}
@@ -0,0 +1,91 @@
package com.adc.da.base.page;
public class BasePage {
private Integer page = 1;
private Integer pageSize = 20;
private Integer startIndex;
private Integer endIndex;
private String orderBy;
private String order;
private String q;
private Pager pager = new Pager();
public BasePage() {
}
public Pager getPager() {
this.pager.setPageId(this.getPage());
this.pager.setPageSize(this.getPageSize());
String orderField = "";
if (this.orderBy != null && this.orderBy.trim().length() > 0) {
orderField = this.orderBy;
}
if (orderField.trim().length() > 0 && this.order != null && this.order.trim().length() > 0) {
orderField = orderField + " " + this.order;
}
this.pager.setOrderField(orderField);
return this.pager;
}
public void setPager(Pager pager) {
this.pager = pager;
}
public Integer getPage() {
return this.page;
}
public void setPage(Integer page) {
this.page = page;
}
public Integer getPageSize() {
return this.pageSize;
}
public void setPageSize(Integer pageSize) {
this.pageSize = pageSize;
}
public String getOrderBy() {
return this.orderBy;
}
public void setOrderBy(String orderBy) {
this.orderBy = orderBy;
}
public String getOrder() {
return this.order;
}
public void setOrder(String order) {
this.order = order;
}
public String getQ() {
return this.q;
}
public void setQ(String q) {
this.q = q;
}
public Integer getStartIndex() {
return this.startIndex;
}
public void setStartIndex(Integer startIndex) {
this.startIndex = (this.page - 1) * this.pageSize + 1;
}
public Integer getEndIndex() {
return this.endIndex;
}
public void setEndIndex(Integer endIndex) {
this.endIndex = this.page * this.pageSize;
}
}
@@ -0,0 +1,169 @@
package com.adc.da.base.page;
public class Pager {
private int pageId = 1;
private int rowCount = 0;
private int pageSize = 10;
private int pageCount = 0;
private int pageOffset = 0;
private int pageTail = 0;
private String orderField;
private boolean orderDirection = true;
private boolean pageEnabled = true;
private int length = 6;
private int startIndex = 0;
private int endIndex = 0;
private int[] indexs;
public Pager() {
}
public int getLength() {
return this.length;
}
public void setLength(int length) {
this.length = length;
}
public int[] getIndexs() {
int len = this.getEndIndex() - this.getStartIndex() + 1;
this.indexs = new int[len];
for(int i = 0; i < len; ++i) {
this.indexs[i] = this.getStartIndex() + i;
}
return this.indexs;
}
public void setIndexs(int[] indexs) {
this.indexs = indexs;
}
public int getStartIndex() {
this.startIndex = (this.pageId - 1) * this.pageSize + 1;
return this.startIndex;
}
public void setStartIndex(int startIndex) {
System.out.println("startIndx:" + this.pageId + ":" + this.pageSize);
this.startIndex = (this.pageId - 1) * this.pageSize + 1;
}
public int getEndIndex() {
this.endIndex = this.pageId * this.pageSize;
return this.endIndex;
}
public void setEndIndex(int endIndex) {
this.endIndex = this.pageId * this.pageSize;
}
protected void doPage() {
this.pageCount = this.rowCount / this.pageSize + 1;
if (this.rowCount % this.pageSize == 0 && this.pageCount > 1) {
--this.pageCount;
}
this.pageOffset = (this.pageId - 1) * this.pageSize;
this.pageTail = this.pageOffset + this.pageSize;
if (this.pageOffset + this.pageSize > this.rowCount) {
this.pageTail = this.rowCount;
}
}
public String getOrderCondition() {
String condition = "";
if (this.orderField != null && this.orderField.length() != 0) {
condition = " order by " + this.orderField + (this.orderDirection ? " " : " desc ");
}
return condition;
}
public String getMysqlQueryCondition() {
String condition = "";
if (this.pageEnabled) {
}
return condition;
}
public void setOrderDirection(boolean orderDirection) {
this.orderDirection = orderDirection;
}
public boolean isOrderDirection() {
return this.orderDirection;
}
public void setOrderField(String orderField) {
this.orderField = orderField;
}
public String getOrderField() {
return this.orderField;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getPageCount() {
return this.pageCount;
}
public void setPageId(int pageId) {
this.pageId = pageId;
}
public int getPageId() {
return this.pageId;
}
public void setPageOffset(int pageOffset) {
this.pageOffset = pageOffset;
}
public int getPageOffset() {
return this.pageOffset;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageSize() {
return this.pageSize;
}
public void setPageTail(int pageTail) {
this.pageTail = pageTail;
}
public int getPageTail() {
return this.pageTail;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
this.doPage();
}
public int getRowCount() {
return this.rowCount;
}
public boolean isPageEnabled() {
return this.pageEnabled;
}
public void setPageEnabled(boolean pageEnabled) {
this.pageEnabled = pageEnabled;
}
}
@@ -0,0 +1,81 @@
package com.adc.da.base.web;
import com.adc.da.base.page.Pager;
import com.adc.da.http.PageInfo;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BaseController<T> {
private static final String DATA = "data";
private static final String TOTAL = "total";
protected BaseController() {
}
public PageInfo<T> getPageInfo(Pager pager, List<T> rows) {
PageInfo<T> pageInfo = new PageInfo();
pageInfo.setList(rows);
pageInfo.setCount((long)pager.getRowCount());
pageInfo.setPageSize(pager.getPageSize());
pageInfo.setPageCount((long)pager.getPageCount());
pageInfo.setPageNo(pager.getPageId());
return pageInfo;
}
public static Map<String, Object> getGridData(int total, List<?> rows) {
Map<String, Object> response = new HashMap();
response.put("total", total);
response.put("data", rows);
return response;
}
public static Map<String, Object> getData(Object data) {
Map<String, Object> response = new HashMap();
response.put("data", data);
return response;
}
public static void download(HttpServletResponse response, File file) throws IOException {
download(response, file, file.getName());
}
public static void download(HttpServletResponse response, File file, String fileName) throws IOException {
FileInputStream in = new FileInputStream(file);
Throwable var4 = null;
try {
download(response, (InputStream)in, fileName);
} catch (Throwable var13) {
var4 = var13;
throw var13;
} finally {
if (in != null) {
if (var4 != null) {
try {
in.close();
} catch (Throwable var12) {
var4.addSuppressed(var12);
}
} else {
in.close();
}
}
}
}
public static void download(HttpServletResponse response, InputStream in, String fileName) throws IOException {
response.setContentType("application/x-msdownload;");
response.addHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
response.setCharacterEncoding("UTF-8");
}
}
@@ -0,0 +1,25 @@
package com.adc.da.exception;
public class AdcDaBaseException extends RuntimeException {
private String errorCode;
public AdcDaBaseException() {
}
public AdcDaBaseException(String message) {
this("-1", message);
}
public AdcDaBaseException(String errorCode, String message) {
super(message);
this.errorCode = errorCode;
}
public String getErrorCode() {
return this.errorCode;
}
public void setErrorCode(String errorCode) {
this.errorCode = errorCode;
}
}
@@ -0,0 +1,14 @@
package com.adc.da.file.store;
import java.io.IOException;
import java.io.InputStream;
public interface IFileStore {
String storeFile(InputStream var1, String var2, String var3) throws IOException;
InputStream loadFile(String var1);
byte[] loadFileBytes(String var1);
}
@@ -0,0 +1,34 @@
package com.adc.da.filter;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import java.util.Arrays;
import java.util.Calendar;
public class AddExpiresHeaderResponse extends HttpServletResponseWrapper {
private static final String[] CACHEABLE_CONTENT_TYPES = new String[]{"text/css", "text/javascript", "application/javascript", "image/png", "image/jpeg", "image/gif", "image/jpg"};
private long maxAge = 0L;
public AddExpiresHeaderResponse(HttpServletResponse response, long maxAge) {
super(response);
this.maxAge = maxAge;
}
public void setContentType(String contentType) {
if (contentType != null && Arrays.binarySearch(CACHEABLE_CONTENT_TYPES, contentType) > -1) {
Calendar inTwoMonths = Calendar.getInstance();
inTwoMonths.add(2, 2);
super.setDateHeader("Expires", inTwoMonths.getTimeInMillis());
super.setHeader("Cache-Control", "max-age=" + this.maxAge);
} else {
super.setHeader("Expires", "-1");
super.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
}
super.setContentType(contentType);
}
static {
Arrays.sort(CACHEABLE_CONTENT_TYPES);
}
}
@@ -0,0 +1,78 @@
package com.adc.da.filter;
import com.adc.da.util.FileUtil;
import com.adc.da.util.RequestUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
public class CsrfFilter implements Filter {
private static final Log logger = LogFactory.getLog(CsrfFilter.class);
private List<String> whiteUrls;
private int whitelistSize = 0;
public CsrfFilter() {
}
public void init(FilterConfig filterConfig) {
String path = CsrfFilter.class.getResource("/").getFile();
this.whiteUrls = FileUtil.readAsStringList(path + "white/csrfWhite.txt");
this.whitelistSize = null == this.whiteUrls ? 0 : this.whiteUrls.size();
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
try {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse res = (HttpServletResponse)response;
String url = req.getRequestURL().toString();
String referurl = req.getHeader("Referer");
if (this.isWhiteReq(referurl)) {
chain.doFilter(request, response);
} else {
req.getRequestDispatcher("/").forward(req, res);
String log = "";
String date = (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date());
String clientIp = RequestUtils.getClientIp(req);
log = "跨站请求---->>>" + clientIp + "||" + date + "||" + referurl + "||" + url;
logger.warn(log);
}
} catch (Exception var11) {
logger.error("doFilter Exception:", var11);
}
}
private boolean isWhiteReq(String referUrl) {
if (referUrl != null && !"".equals(referUrl) && this.whitelistSize != 0) {
String refHost = "";
referUrl = referUrl.toLowerCase();
if (referUrl.startsWith("http://")) {
refHost = referUrl.substring(7);
} else if (referUrl.startsWith("https://")) {
refHost = referUrl.substring(8);
}
Iterator iterator = this.whiteUrls.iterator();
String urlTemp;
do {
if (!iterator.hasNext()) {
return false;
}
urlTemp = (String)iterator.next();
} while(refHost.indexOf(urlTemp.toLowerCase()) <= -1);
return true;
} else {
return true;
}
}
public void destroy() {
}
}
@@ -0,0 +1,40 @@
package com.adc.da.filter;
import com.adc.da.util.IpUtil;
import eu.bitwalker.useragentutils.UserAgent;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class FakeJSessionIdFilter implements Filter {
public FakeJSessionIdFilter() {
}
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
String ip = (String)request.getSession().getAttribute("ip");
String browser = (String)request.getSession().getAttribute("browser");
UserAgent userAgent = UserAgent.parseUserAgentString(request.getHeader("User-Agent"));
String newBrowser = userAgent.getBrowser().toString();
String newIp = IpUtil.getIpAddr(request);
if ("0:0:0:0:0:0:0:1".equals(newIp)) {
newIp = "127.0.0.1";
}
request.getSession().setAttribute("ip", newIp);
request.getSession().setAttribute("browser", newBrowser);
if (ip == null || browser == null || newBrowser.equals(browser) && newIp.equals(ip)) {
filterChain.doFilter(req, resp);
} else {
request.getSession().invalidate();
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
@@ -0,0 +1,33 @@
package com.adc.da.filter;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HttpCacheFilter implements Filter {
private long maxAge = 86400L;
public HttpCacheFilter() {
}
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
chain.doFilter(request, new AddExpiresHeaderResponse(response, this.maxAge));
}
public void init(FilterConfig config) throws ServletException {
String maxAgeStr = config.getInitParameter("maxAge");
if (StringUtils.isNotEmpty(maxAgeStr)) {
this.maxAge = Long.valueOf(maxAgeStr);
}
}
}
@@ -0,0 +1,102 @@
package com.adc.da.filter;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
public class RequestInfoFilter implements Filter {
private static final Log logger = LogFactory.getLog(RequestInfoFilter.class);
private static final List<String> ignoreList = new ArrayList();
public RequestInfoFilter() {
}
public void destroy() {
}
public void init(FilterConfig filterConfig) throws ServletException {
ignoreList.add("js");
ignoreList.add("css");
ignoreList.add("png");
ignoreList.add("ico");
ignoreList.add("gif");
ignoreList.add("jpg");
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;
try {
long startTime = System.currentTimeMillis();
String uri = request.getServletPath() + (request.getPathInfo() == null ? "" : request.getPathInfo());
if (!isIgnore(uri)) {
logger.info("==================== RequestInfoFilter Start ====================");
logger.info(request.getMethod() + " : " + uri);
logger.info("session存活时间:" + request.getSession().getMaxInactiveInterval());
this.logHeaders(request);
this.logParams(request);
logger.info(request.getHeader("Authorization"));
chain.doFilter(request, response);
long endTime = System.currentTimeMillis();
logger.info(request.getMethod() + " 耗时:" + (endTime - startTime) + " ms");
logger.info("==================== RequestInfoFilter End ====================");
} else {
chain.doFilter(request, response);
}
} catch (Exception var11) {
logger.error("doFilter error", var11);
}
}
private void logHeaders(HttpServletRequest request) {
Map<String, String> headerMap = new HashMap();
Enumeration headers = request.getHeaderNames();
while(headers.hasMoreElements()) {
String headName = (String)headers.nextElement();
if (headName != null && !"".equals(headName)) {
headerMap.put(headName, request.getHeader(headName));
}
}
headerMap.put("RemoteHost", request.getRemoteHost() + ":" + request.getRemotePort());
logger.info(headerMap);
}
private void logParams(HttpServletRequest request) {
Map<String, String> maps = new HashMap();
Enumeration keys = request.getParameterNames();
while(keys.hasMoreElements()) {
String key = (String)keys.nextElement();
if (StringUtils.isNotEmpty(key)) {
String values = request.getParameter(key);
maps.put(key, values);
}
}
logger.info(maps.toString());
}
private static final boolean isIgnore(String url) {
boolean ignore = false;
int index = url.lastIndexOf(46);
if (index > 0) {
String subFix = url.substring(index + 1, url.length());
if (ignoreList.contains(subFix)) {
ignore = true;
}
}
return ignore;
}
}
@@ -0,0 +1,29 @@
package com.adc.da.filter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
public class WebFilter implements Filter {
private static final Logger logger = LoggerFactory.getLogger(WebFilter.class);
public WebFilter() {
// 不做操作
}
public void init(FilterConfig config) throws ServletException {
// 不做操作
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest)request);
chain.doFilter(xssRequest, response);
}
public void destroy() {
// 不做操作
}
}
@@ -0,0 +1,124 @@
package com.adc.da.filter;
import com.adc.da.xss.SQLFilter;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
private static final Logger logger = LoggerFactory.getLogger(XssHttpServletRequestWrapper.class);
HttpServletRequest orgRequest;
private static final SQLFilter sqlFilter = new SQLFilter();
public XssHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
this.orgRequest = request;
}
public ServletInputStream getInputStream() throws IOException {
String type = super.getHeader("Content-Type");
if (StringUtils.indexOfIgnoreCase(type, "application/json") < 0) {
return super.getInputStream();
} else {
String json = IOUtils.toString(super.getInputStream(), "utf-8");
if (StringUtils.isBlank(json)) {
return super.getInputStream();
} else {
json = this.xssSqlEncode(json);
final ByteArrayInputStream bis = new ByteArrayInputStream(json.getBytes("utf-8"));
return new ServletInputStream() {
public boolean isFinished() {
return true;
}
public boolean isReady() {
return true;
}
public void setReadListener(ReadListener readListener) {
// 不做操作
}
public int read() throws IOException {
return bis.read();
}
};
}
}
}
public String getParameter(String name) {
String value = super.getParameter(this.xssSqlEncode(name));
if (StringUtils.isNotBlank(value)) {
value = this.xssSqlEncode(value);
}
return value;
}
public String[] getParameterValues(String name) {
String[] parameters = super.getParameterValues(name);
if (parameters != null && parameters.length != 0) {
for(int i = 0; i < parameters.length; ++i) {
parameters[i] = this.xssSqlEncode(parameters[i]);
}
return parameters;
} else {
return null;
}
}
public Map<String, String[]> getParameterMap() {
Map<String, String[]> map = new LinkedHashMap();
Map<String, String[]> parameters = super.getParameterMap();
Iterator i$ = parameters.keySet().iterator();
while(i$.hasNext()) {
String key = (String)i$.next();
String[] values = (String[])parameters.get(key);
for(int i = 0; i < values.length; ++i) {
values[i] = this.xssSqlEncode(values[i]);
}
map.put(key, values);
}
return map;
}
public String getHeader(String name) {
String value = super.getHeader(this.xssSqlEncode(name));
if (StringUtils.isNotBlank(value)) {
value = this.xssSqlEncode(value);
}
return value;
}
private String xssSqlEncode(String input) {
String htmlOutput = XssShieldUtil.stripXss(input);
// SQLFilter var10000 = sqlFilter;
return SQLFilter.sqlInject(htmlOutput);
}
public HttpServletRequest getOrgRequest() {
return this.orgRequest;
}
public static HttpServletRequest getOrgRequest(HttpServletRequest request) {
return request instanceof XssHttpServletRequestWrapper ? ((XssHttpServletRequestWrapper)request).getOrgRequest() : request;
}
}
@@ -0,0 +1,96 @@
package com.adc.da.filter;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class XssShieldUtil {
private static final Logger logger = LoggerFactory.getLogger(XssShieldUtil.class);
private static List<Pattern> patterns = null;
private XssShieldUtil(){
super();
}
private static List<Object[]> getXssPatternList()
{
List<Object[]> ret = new ArrayList();
ret.add(new Object[] { "<(no)?script[^>]*>.*?</(no)?script>", Integer.valueOf(2) });
ret.add(new Object[] { "eval\\((.*?)\\)", Integer.valueOf(42) });
ret.add(new Object[] { "expression\\((.*?)\\)", Integer.valueOf(42) });
ret.add(new Object[] { "(javascript:|vbscript:|view-source:)*", Integer.valueOf(2) });
// ret.add(new Object[] { "<(\"[^\"]*\"|'[^']*'|[^'\">])*>", Integer.valueOf(42) });
ret.add(new Object[] { "(window\\.location|window\\.|\\.location|document\\.cookie|document\\.|alert\\(.*?\\)|window\\.open\\()*", Integer.valueOf(42) });
ret.add(new Object[] { "<+\\s*\\w*\\s*(oncontrolselect|oncopy|oncut|ondataavailable|ondatasetchanged|ondatasetcomplete|ondblclick|ondeactivate|ondrag|ondragend|ondragenter|ondragleave|ondragover|ondragstart|ondrop|onerror=|onerroupdate|onfilterchange|onfinish|onfocus|onfocusin|onfocusout|onhelp|onkeydown|onkeypress|onkeyup|onlayoutcomplete|onload|onlosecapture|onmousedown|onmouseenter|onmouseleave|onmousemove|onmousout|onmouseover|onmouseup|onmousewheel|onmove|onmoveend|onmovestart|onabort|onactivate|onafterprint|onafterupdate|onbefore|onbeforeactivate|onbeforecopy|onbeforecut|onbeforedeactivate|onbeforeeditocus|onbeforepaste|onbeforeprint|onbeforeunload|onbeforeupdate|onblur|onbounce|oncellchange|onchange|onclick|oncontextmenu|onpaste|onpropertychange|onreadystatechange|onreset|onresize|onresizend|onresizestart|onrowenter|onrowexit|onrowsdelete|onrowsinserted|onscroll|onselect|onselectionchange|onselectstart|onstart|onstop|onsubmit|onunload)+\\s*=+", Integer.valueOf(42) });
return ret;
}
private static List<Pattern> getPatterns()
{
if (patterns == null)
{
List<Pattern> list = new ArrayList();
String regex = null;
Integer flag = null;
int arrLength = 0;
int i;
Iterator localIterator = getXssPatternList().iterator();
while (localIterator.hasNext()){
Object[] arr = (Object[])localIterator.next();
if(arr.length==0){
continue;
}
regex = (String)arr[0];
flag = (Integer)arr[1];
list.add(Pattern.compile(regex, flag.intValue()));
}
/* for (Iterator localIterator = getXssPatternList().iterator(); localIterator.hasNext();i < arrLength) {
Object[] arr = (Object[])localIterator.next();
arrLength = arr.length;
i = 0;
continue;
regex = (String)arr[0];
flag = (Integer)arr[1];
list.add(Pattern.compile(regex, flag.intValue()));
i++;
}*/
patterns = list;
}
return patterns;
}
public static String stripXss(String value)
{
if (StringUtils.isNotBlank(value))
{
Matcher matcher = null;
for (Pattern pattern : getPatterns())
{
matcher = pattern.matcher(value);
if (matcher.find()) {
value = matcher.replaceAll("");
}
}
// value = value.replaceAll("<", "&lt;").replaceAll(">", "&gt;");
String[] pattern = { "%", " select ", " insert ", " delete ", " from ",
"count\\(", "drop table", " update ", " truncate ", "asc\\(",
"mid\\(", "char\\(", "xp_cmdshell", " exec ", " master ",
"netlocalgroup administrators", "net user", " or ", " and " };
for (int i = 0; i < pattern.length; i++) {
value = value.replaceAll(pattern[i],"");
}
}
return value;
}
}
@@ -0,0 +1,31 @@
package com.adc.da.xss;
import com.adc.da.exception.AdcDaBaseException;
import org.apache.commons.lang3.StringUtils;
public class SQLFilter {
public static String sqlInject(String str) {
if (StringUtils.isBlank(str)) {
return null;
} else {
String checkStr= str;
checkStr = StringUtils.replace(checkStr, "\\", "");
checkStr = checkStr.toLowerCase();
String[] keywords = new String[]{"master", "truncate", "insert", "select", "delete", "update", "declare", "alter", "drop"};
String[] arr$ = keywords;
int len$ = keywords.length;
for(int i$ = 0; i$ < len$; ++i$) {
String keyword = arr$[i$];
if (checkStr.indexOf(keyword) != -1) {
throw new AdcDaBaseException("包含非法字符");
}
}
return str;
}
}
}