Bladeren bron

系统安全性优化,登陆Token写Cookie时进行MD5加密;

xuxueli 8 jaren geleden
bovenliggende
commit
3569b1422c

+ 1 - 1
doc/XXL-JOB官方文档.md Bestand weergeven

1101
 - 24、Log地址格式兼容,支持非"/"结尾路径配置;
1101
 - 24、Log地址格式兼容,支持非"/"结尾路径配置;
1102
 - 25、底层系统日志级别规范调整,清理遗留代码;
1102
 - 25、底层系统日志级别规范调整,清理遗留代码;
1103
 - 26、建表SQL优化,支持同步创建制定编码的库和表;
1103
 - 26、建表SQL优化,支持同步创建制定编码的库和表;
1104
-
1104
+- 27、系统安全性优化,登陆Token写Cookie时进行MD5加密;
1105
 
1105
 
1106
 
1106
 
1107
 ### TODO LIST
1107
 ### TODO LIST

+ 15 - 13
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/IndexController.java Bestand weergeven

2
 
2
 
3
 import com.xxl.job.admin.controller.annotation.PermessionLimit;
3
 import com.xxl.job.admin.controller.annotation.PermessionLimit;
4
 import com.xxl.job.admin.controller.interceptor.PermissionInterceptor;
4
 import com.xxl.job.admin.controller.interceptor.PermissionInterceptor;
5
-import com.xxl.job.admin.core.util.PropertiesUtil;
6
 import com.xxl.job.admin.service.XxlJobService;
5
 import com.xxl.job.admin.service.XxlJobService;
7
 import com.xxl.job.core.biz.model.ReturnT;
6
 import com.xxl.job.core.biz.model.ReturnT;
8
 import org.apache.commons.lang3.StringUtils;
7
 import org.apache.commons.lang3.StringUtils;
61
 	@ResponseBody
60
 	@ResponseBody
62
 	@PermessionLimit(limit=false)
61
 	@PermessionLimit(limit=false)
63
 	public ReturnT<String> loginDo(HttpServletRequest request, HttpServletResponse response, String userName, String password, String ifRemember){
62
 	public ReturnT<String> loginDo(HttpServletRequest request, HttpServletResponse response, String userName, String password, String ifRemember){
64
-		if (!PermissionInterceptor.ifLogin(request)) {
65
-			if (StringUtils.isNotBlank(userName) && StringUtils.isNotBlank(password)
66
-					&& PropertiesUtil.getString("xxl.job.login.username").equals(userName)
67
-					&& PropertiesUtil.getString("xxl.job.login.password").equals(password)) {
68
-				boolean ifRem = false;
69
-				if (StringUtils.isNotBlank(ifRemember) && "on".equals(ifRemember)) {
70
-					ifRem = true;
71
-				}
72
-				PermissionInterceptor.login(response, ifRem);
73
-			} else {
74
-				return new ReturnT<String>(500, "账号或密码错误");
75
-			}
63
+		// valid
64
+		if (PermissionInterceptor.ifLogin(request)) {
65
+			return ReturnT.SUCCESS;
66
+		}
67
+
68
+		// param
69
+		if (StringUtils.isBlank(userName) || StringUtils.isBlank(password)){
70
+			return new ReturnT<String>(500, "账号或密码为空");
71
+		}
72
+		boolean ifRem = (StringUtils.isNotBlank(ifRemember) && "on".equals(ifRemember))?true:false;
73
+
74
+		// do login
75
+		boolean loginRet = PermissionInterceptor.login(response, userName, password, ifRem);
76
+		if (!loginRet) {
77
+			return new ReturnT<String>(500, "账号或密码错误");
76
 		}
78
 		}
77
 		return ReturnT.SUCCESS;
79
 		return ReturnT.SUCCESS;
78
 	}
80
 	}

+ 18 - 3
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java Bestand weergeven

3
 import com.xxl.job.admin.controller.annotation.PermessionLimit;
3
 import com.xxl.job.admin.controller.annotation.PermessionLimit;
4
 import com.xxl.job.admin.core.util.CookieUtil;
4
 import com.xxl.job.admin.core.util.CookieUtil;
5
 import com.xxl.job.admin.core.util.PropertiesUtil;
5
 import com.xxl.job.admin.core.util.PropertiesUtil;
6
+import org.apache.commons.codec.digest.DigestUtils;
6
 import org.springframework.web.method.HandlerMethod;
7
 import org.springframework.web.method.HandlerMethod;
7
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
8
 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
8
 
9
 
22
     static {
23
     static {
23
         String username = PropertiesUtil.getString("xxl.job.login.username");
24
         String username = PropertiesUtil.getString("xxl.job.login.username");
24
         String password = PropertiesUtil.getString("xxl.job.login.password");
25
         String password = PropertiesUtil.getString("xxl.job.login.password");
25
-        String temp = username + "_" + password;
26
-        LOGIN_IDENTITY_TOKEN = new BigInteger(1, temp.getBytes()).toString(16);
26
+
27
+        // login token
28
+        String tokenTmp = DigestUtils.md5Hex(username + "_" + password);
29
+		tokenTmp = new BigInteger(1, tokenTmp.getBytes()).toString(16);
30
+
31
+		LOGIN_IDENTITY_TOKEN = tokenTmp;
27
     }
32
     }
28
 	
33
 	
29
-	public static boolean login(HttpServletResponse response, boolean ifRemember){
34
+	public static boolean login(HttpServletResponse response, String username, String password, boolean ifRemember){
35
+
36
+    	// login token
37
+		String tokenTmp = DigestUtils.md5Hex(username + "_" + password);
38
+		tokenTmp = new BigInteger(1, tokenTmp.getBytes()).toString(16);
39
+
40
+		if (!LOGIN_IDENTITY_TOKEN.equals(tokenTmp)){
41
+			return false;
42
+		}
43
+
44
+		// do login
30
 		CookieUtil.set(response, LOGIN_IDENTITY_KEY, LOGIN_IDENTITY_TOKEN, ifRemember);
45
 		CookieUtil.set(response, LOGIN_IDENTITY_KEY, LOGIN_IDENTITY_TOKEN, ifRemember);
31
 		return true;
46
 		return true;
32
 	}
47
 	}

+ 0 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java Bestand weergeven

87
 	 * @param request
87
 	 * @param request
88
 	 * @param response
88
 	 * @param response
89
 	 * @param key
89
 	 * @param key
90
-	 * @param domainName
91
 	 */
90
 	 */
92
 	public static void remove(HttpServletRequest request, HttpServletResponse response, String key) {
91
 	public static void remove(HttpServletRequest request, HttpServletResponse response, String key) {
93
 		Cookie cookie = get(request, key);
92
 		Cookie cookie = get(request, key);