背景:

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 攻击的实现方法相关推荐

  1. java使用jsp servlet来防止csrf 攻击的实现方法

    背景: 1.csrf知识 CSRF(Cross-site request forgery跨站请求伪造,也被称为"one click attack"或者session riding, ...

  2. java csrf_java使用jsp servlet来防止csrf 攻击的实现方法

    背景: 1.csrf知识 CSRF(Cross-site request forgery跨站请求伪造,也被称为"one click attack"或者session riding, ...

  3. JSP/Servlet构建三层管理信息系统

    管理信息系统(MIS)是一个由人.计算机等组成的能进行信息的收集.传递.存储.加工和使用的系统.随着科技的发展,信息的膨胀,企业信息化成了企业在竞争中处于不败地位的有效手段之一.而MIS不仅能够及时全 ...

  4. 用JSP/Servlet构建三层式管理信息系统

    摘要:本文介绍了一种开发基于Web的管理信息系统的实现框架.利用JSP/Servlet技术,结合MVC设计模式,使得开发过程更加灵活,更加易于维护. 关键词:管理信息系统,JSP,Servlet,MV ...

  5. 在线答疑系统源码java_java+jsp+servlet+mysql在线教学答疑系统

    需求分析 基于java+jsp+servlet+mysql技术, 实现一个在线教学答疑系统, 学生可以通过该网站提出问题留言,教师登录后可以进行答疑, 系统管理员可以对答疑系统进行管理 运行环境 ja ...

  6. 万字讲解9种Web应用攻击与防护安全。XSS、CSRF、SQL注入等是如何实现的

    OWASP(开放Web软体安全项目- Open Web Application Security Project) 是一个开源的.非盈利的全球性安全组织,致力于应用软件的安全研究.使命 是使应用软件更 ...

  7. JSP/Servlet基础语法

    相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...

  8. 用JSP/Servlet应用开发一个简单的考试报名系统

    用JSP/Servlet实现一个简单的考试报名系统 背景 一.任务/要求 二.对项目需求进行简要的建模概括分析. 2.项目实现. 2.1项目结构. 2.1.1层次结构 2.1.1数据表结构. 2.2项 ...

  9. 常见的Web攻击方式:SQL注入、XSS跨站脚本攻击、CSRF跨站点请求伪造

    常见的Web攻击有SQL注入.XSS跨站脚本攻击.跨站点请求伪造共三类,下面分别简单介绍. 1 SQL注入 1.1 原理 SQL注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字 ...

最新文章

  1. c语言中将数组设为空,求助~~ 如何把数组变成动态输入的?
  2. 高级运维工程师的打怪升级之路
  3. 基于Http替补新闻WebService数据交换
  4. CSS3实现侧边栏快速定位的隐藏和消失
  5. 计算机科普小知识——Win7系统32位与64位的区别,该如何选择?
  6. c+pow函数的头文件_pow()函数以及C ++中的示例
  7. php伪静态不支持中文,Discuz开启伪静态导致中文会员使用手机无法访问的解决方法...
  8. java8四大核心函数式接口(模拟实现,全网最通俗易懂)
  9. java optional_JAVA Optional总结
  10. Vertically aligning HTML
  11. Microsoft Office 2016 简体中文 Vol 版镜像下载
  12. 服务器版本虚拟打印机,虚拟打印机(ImagePrinter)
  13. 【Linux私房菜】第四期——管理
  14. 关于网站被挂马的症状以及处理解决方法
  15. react实现上传文件进度条功能_js上传文件(可自定义进度条)
  16. maya2020 redshift3.0.31demo版安装方法。
  17. mac 微信 QQ 截图 问题
  18. 9个精品AI开源免费实战项目助你掌握AI工程师基本技能
  19. GetMessage()函数使用时的注意
  20. 七牛云存储九折优惠码以及充值图文教程

热门文章

  1. java web 颜色灰色_网站动态变灰解决方案(java web项目网站)
  2. Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
  3. startActivityForResult用法详解
  4. java将json转为hashmap_将JSON字符串转换为HashMap
  5. Redis中查找大key
  6. windows下kafka源码阅读环境搭建
  7. Windows 10封装中出现“无法验证你的Windows安装”错误解决方法
  8. 在 Ubuntu 16.04 上安装 LEMP 环境之图文向导
  9. GPRS模块AT呼叫控制命令
  10. 【嵌入式】——对#define GPBCON (*(volatile unsigned long*)0x56000010)的理解