csrf攻击 java_java使用jsp servlet来防止csrf 攻击的实现方法
背景:
1.csrf知识
CSRF(Cross-site request forgery跨站请求伪造,也被称为“one click attack”或者session riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与XSS非常不同,并且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比XSS更具危险性。
常见的解决方法:
Cookies Hashing:每一个表单请求中都加入随机的Cookie,由于网站中存在XSS漏洞而被偷窃的危险。
HTTP refer:可以对服务器获得的请求来路进行欺骗以使得他们看起来合法,这种方法不能够有效防止攻击。
验证码:用户提交的每一个表单中使用一个随机验证码,让用户在文本框中填写图片上的随机字符串,并且在提交表单后对其进行检测。
令牌Tocken:一次性令牌在完成他们的工作后将被销毁,比较安全。
2. 在jsp 表单中产生一个加密随机数,传入到serlet中进行验证。
解决方法如下:
1. 产生随机数。
SecureRandom random=SecureRandom.getInstance("SHA1PRNG");
long seq=random.nextLong(); String random=""+seq; session.setAttribute("random_session",random);
%>
2. 使用隐藏域传递比较值。
>
3. servlet控制器获取参数比较。
String random_form=request.getParameter("random_form");
String random_session=(String)request.getSession().getAttribute("random_session");
out.println("random_form:"+random_form);
out.println("random_session:"+random_session);
if(random_form!=null&&random_session!=null&&random_form.equalsIgnoreCase(random_session)){
//business
}
小结:
1. jsp中使用java代码,使用形式,错误使用过'${}'.
2. 隐藏区域使用简化形式/>将会把/当成字符串解析,而不是结束符。
3. 日志或者打印出random_form、random_session 的值,防止出现无法调试的情况。
4. jsp中规规矩矩的使用session.setAttribute()设值,servlet中使用request.getSession().getAttribute()取值最保险。
5. 隐藏区一定要位于提交按钮前面,否则将读取不到隐藏区的值。
6. 见我的前两篇文章。
http://www.cnblogs.com/davidwang456/p/3579339.html 使用filter来做
http://www.cnblogs.com/davidwang456/p/3579444.html 使用tag或者spring security包含的东西来做。
csrf攻击 java_java使用jsp servlet来防止csrf 攻击的实现方法相关推荐
- java使用jsp servlet来防止csrf 攻击的实现方法
背景: 1.csrf知识 CSRF(Cross-site request forgery跨站请求伪造,也被称为"one click attack"或者session riding, ...
- java csrf_java使用jsp servlet来防止csrf 攻击的实现方法
背景: 1.csrf知识 CSRF(Cross-site request forgery跨站请求伪造,也被称为"one click attack"或者session riding, ...
- JSP/Servlet构建三层管理信息系统
管理信息系统(MIS)是一个由人.计算机等组成的能进行信息的收集.传递.存储.加工和使用的系统.随着科技的发展,信息的膨胀,企业信息化成了企业在竞争中处于不败地位的有效手段之一.而MIS不仅能够及时全 ...
- 用JSP/Servlet构建三层式管理信息系统
摘要:本文介绍了一种开发基于Web的管理信息系统的实现框架.利用JSP/Servlet技术,结合MVC设计模式,使得开发过程更加灵活,更加易于维护. 关键词:管理信息系统,JSP,Servlet,MV ...
- 在线答疑系统源码java_java+jsp+servlet+mysql在线教学答疑系统
需求分析 基于java+jsp+servlet+mysql技术, 实现一个在线教学答疑系统, 学生可以通过该网站提出问题留言,教师登录后可以进行答疑, 系统管理员可以对答疑系统进行管理 运行环境 ja ...
- 万字讲解9种Web应用攻击与防护安全。XSS、CSRF、SQL注入等是如何实现的
OWASP(开放Web软体安全项目- Open Web Application Security Project) 是一个开源的.非盈利的全球性安全组织,致力于应用软件的安全研究.使命 是使应用软件更 ...
- JSP/Servlet基础语法
相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...
- 用JSP/Servlet应用开发一个简单的考试报名系统
用JSP/Servlet实现一个简单的考试报名系统 背景 一.任务/要求 二.对项目需求进行简要的建模概括分析. 2.项目实现. 2.1项目结构. 2.1.1层次结构 2.1.1数据表结构. 2.2项 ...
- 常见的Web攻击方式:SQL注入、XSS跨站脚本攻击、CSRF跨站点请求伪造
常见的Web攻击有SQL注入.XSS跨站脚本攻击.跨站点请求伪造共三类,下面分别简单介绍. 1 SQL注入 1.1 原理 SQL注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字 ...
最新文章
- c语言中将数组设为空,求助~~ 如何把数组变成动态输入的?
- 高级运维工程师的打怪升级之路
- 基于Http替补新闻WebService数据交换
- CSS3实现侧边栏快速定位的隐藏和消失
- 计算机科普小知识——Win7系统32位与64位的区别,该如何选择?
- c+pow函数的头文件_pow()函数以及C ++中的示例
- php伪静态不支持中文,Discuz开启伪静态导致中文会员使用手机无法访问的解决方法...
- java8四大核心函数式接口(模拟实现,全网最通俗易懂)
- java optional_JAVA Optional总结
- Vertically aligning HTML
- Microsoft Office 2016 简体中文 Vol 版镜像下载
- 服务器版本虚拟打印机,虚拟打印机(ImagePrinter)
- 【Linux私房菜】第四期——管理
- 关于网站被挂马的症状以及处理解决方法
- react实现上传文件进度条功能_js上传文件(可自定义进度条)
- maya2020 redshift3.0.31demo版安装方法。
- mac 微信 QQ 截图 问题
- 9个精品AI开源免费实战项目助你掌握AI工程师基本技能
- GetMessage()函数使用时的注意
- 七牛云存储九折优惠码以及充值图文教程
热门文章
- java web 颜色灰色_网站动态变灰解决方案(java web项目网站)
- Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
- startActivityForResult用法详解
- java将json转为hashmap_将JSON字符串转换为HashMap
- Redis中查找大key
- windows下kafka源码阅读环境搭建
- Windows 10封装中出现“无法验证你的Windows安装”错误解决方法
- 在 Ubuntu 16.04 上安装 LEMP 环境之图文向导
- GPRS模块AT呼叫控制命令
- 【嵌入式】——对#define GPBCON (*(volatile unsigned long*)0x56000010)的理解