在页面中添加Token防止越权访问
来源:互联网 发布:中信信托知乎 编辑:程序博客网 时间:2024/05/16 14:03
1、首先是在访问JSP的时候生成一个随机数,放入session中。同时会在服务器缓存一份Token。
2、当form到后台后,调用工具类验证Token。会在TokenList中验证是有该Token值,如果有则验证通过,同时删除List中的Token。
1.引入工具类
package com.yiwei.utils;import java.util.ArrayList;import javax.servlet.http.HttpSession;public class Token {private static final String TOKEN_LIST_NAME = "tokenList";public static final String TOKEN_STRING_NAME = "token";private static ArrayList getTokenList(HttpSession session) {Object obj = session.getAttribute(TOKEN_LIST_NAME);if (obj != null) {return (ArrayList) obj;} else {ArrayList tokenList = new ArrayList();session.setAttribute(TOKEN_LIST_NAME, tokenList);return tokenList;}}private static void saveTokenString(String tokenStr, HttpSession session) {ArrayList tokenList = getTokenList(session);tokenList.add(tokenStr);session.setAttribute(TOKEN_LIST_NAME, tokenList);}private static String generateTokenString() {return new Long(System.currentTimeMillis()).toString();}/** *//** * * Generate a token string, and save the string in session, then return the * token string. * * * * @param HttpSession * * session * * @return a token string used for enforcing a single request for a * particular transaction. * */public static String getTokenString(HttpSession session) {String tokenStr = generateTokenString();saveTokenString(tokenStr, session);return tokenStr;}/** *//** * * check whether token string is valid. if session contains the token * string, return true. * * otherwise, return false. * * * * @param String * * tokenStr * * @param HttpSession * * session * * @return true: session contains tokenStr; false: session is null or * tokenStr is id not in session * */public static boolean isTokenStringValid(String tokenStr, HttpSession session) {boolean valid = false;if (session != null) {ArrayList tokenList = getTokenList(session);if (tokenList.contains(tokenStr)) {valid = true;tokenList.remove(tokenStr);}}return valid;}}2.在JSP页面导入类包
<%@ page import="com.yiwei.utils.Token" %>
3.在JSP页面form表单添加隐藏域
<input type="hidden" name="<%=Token.TOKEN_STRING_NAME %>" value="<%=Token.getTokenString(session) %>">
if(!Token.isTokenStringValid(request.getParameter(Token.TOKEN_STRING_NAME), request.getSession())){responseMessage(response, "非法访问");return;}
1 0
- 在页面中添加Token防止越权访问
- 如何防止 直接 访问 网页 或 越权 访问网页
- C++ 封装只能防止无意识的越权访问
- token 防止页面重复提交
- 防止登录页面出现在frame中
- Swagger2在header中添加token(java)
- 跨域访问越权问题
- 优酷是如何防止视频被越权下载
- Struts中token标签防止重复提交
- 在header中添加自定义属性防止CSRF
- 在JSF中防止页面刷新重复提交
- 在ASP.NET AJAX中防止用户多次提交页面
- 在ASP.NET AJAX中防止用户多次提交页面
- 在ASP.NET AJAX中防止用户多次提交页面
- 防止WebBrowser控件在新窗口中打开链接页面
- 防止WebBrowser在新窗口中打开链接页面
- 在ASP.NET AJAX中防止用户多次提交页面
- C#防止WebBrowser在新窗口中打开链接页面
- hdoj上的一题和程序设计第二次作业的拓展-人见人爱a+b
- C++的<unordered_set>
- hdoj-2028-Lowest common multiple plus
- hdoj-2035-人见人爱a^b
- hdoj-2039-三角形
- 在页面中添加Token防止越权访问
- 列举一些有所帮助的blog和文章
- 高精度N的阶乘-N!
- 《算法竞赛入门经典》习题及反思
- hdoj-2053-Switch Game
- JS HashMap
- Oracle PLSQL通过SMTP发送E-MAIL邮件代码
- 深度优先搜索初尝试-DFS-LakeCounting POJ No.2386
- 使用fio测试磁盘I/O性能