背景:

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包含的东西来做。

java csrf_java使用jsp servlet来防止csrf 攻击的实现方法相关推荐

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

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

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

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

  3. php csrf攻击 xss区别,XSS与CSRF攻击及防御方法

    前言 web安全这词可能对于服务端工程师来说更加"眼熟",部分前端工程师并不是十分了解,今天就来讲讲XSS攻击与CSRF攻击及防御方法 XSS XSS (Cross Site Sc ...

  4. Java项目:jsp+servlet图书管理系统

    作者主页:源码空间站2022 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 使用jsp+servlet.layui.mysql完成的图书馆系统,包含用户图书借 ...

  5. Java Web——基于Jsp+Servlet的大学生社团管理系统

    JavaWeb课程设计+JavaWeb实训作业:(Jsp+Servlet+Mysql+Tomcat+Idea) 项目类型:JAVA WEB项目 用户类型:3个角色(管理员+社长+学生) 主要技术:Js ...

  6. JAVA incept_(jsp+servlet)ERP管理系统 - WEB源码|JSP源码/Java|源代码 - 源码中国

    (jsp+servlet)ERP管理系统 (jsp+servlet)ERP管理系统\erp (jsp+servlet)ERP管理系统\erp\.classpath (jsp+servlet)ERP管理 ...

  7. Java项目:JSP+servlet鲜花销售商城管理系统

    作者主页:夜未央5788 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 本系统分为前后台,普通用户可在前台页面购买鲜花,加入购物车.查看订单等:后台为管理员登 ...

  8. Java毕业设计——> JSP+Servlet+C3P0+Mysql实现的网上蛋糕店

    这次分享一个蛋糕商场系统,还是很简单的系统.界面简洁但不粗糙.. 本系统基于JSP+Servlet+C3P0+Mysql+JDBC.涉及技术少,易于理解,适合JavaWeb初学者学习使用. 难度等级: ...

  9. CSRF攻击的原理和spring security对CSRF攻击的解决方法

    对于CSRF攻击的原理,直接上图然后解释一下 一个用户通过浏览器成功登录一个网站,登陆成功后,服务器会返回一个该用户的唯一标识放入浏览器Cookie中,以此作为用户之后操作的唯一凭证.假设此时该用户在 ...

最新文章

  1. R语言NaN函数实战(计数、替换、删除)
  2. 第十五周项目二-洗牌(范形程序设计)
  3. 诗歌rails之 method_missing
  4. 《从paxos到zookeeper》学习笔记(一)
  5. FreeMarker基础语法教程
  6. iterm2自动补全_【超级实用】Iterm2 + ohmyzsh 打造强大的终端编辑器
  7. LWP 轻量级线程的意义与实现
  8. echarts的legend显示不全_Echarts【1、数据过多导致显示不全分页,2、数据展示探讨分析】...
  9. 两端对齐几种实现方案
  10. 字符串转换为小数(如String a=“123“),转换之后为123.0
  11. python json详解
  12. 新版贵金属喊单直播间 财经直播间系统 视频直播室在线喊单 源码
  13. Modbus RTU/ASCll+TCP+OPC电脑模拟+串口调试软件对接方案
  14. 2021年4月中国旅游行业网络关注度分析报告
  15. 微服务网关 vs K8s Ingress
  16. 编程语言之scala基础
  17. 【CF446B】 DZY Loves Modification
  18. VSCode中Markdown 无法显示图片
  19. 阿里数据库内核月报导航
  20. 做一个九宫格诗词答题小程序 (二)倒计时功能实现

热门文章

  1. Android:图片加载库Glide VS Picasso
  2. 出现opencv error: assertion failed..........错误时, 一步解决
  3. esp8266 阿里云 arduino_ESP8266接入阿里云——基于官方SDK接入阿里云串口获取云下发数据...
  4. 隧道技术_隧道施工关于新防水工艺技术
  5. 基于OpencvTensorflow实现实时查找停车位置
  6. spring cloud架构 - HongHu common-service 项目构建过程
  7. CSS代码检查工具stylelint
  8. 802.1X学习笔记
  9. php7实践指南图书手册
  10. 串口IDLE空闲中断+DMA实现接收不定长数据基于stm32cubemx