java csrf_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包含的东西来做。
java csrf_java使用jsp servlet来防止csrf 攻击的实现方法相关推荐
- java使用jsp servlet来防止csrf 攻击的实现方法
背景: 1.csrf知识 CSRF(Cross-site request forgery跨站请求伪造,也被称为"one click attack"或者session riding, ...
- csrf攻击 java_java使用jsp servlet来防止csrf 攻击的实现方法
背景: 1.csrf知识 CSRF(Cross-site request forgery跨站请求伪造,也被称为"one click attack"或者session riding, ...
- php csrf攻击 xss区别,XSS与CSRF攻击及防御方法
前言 web安全这词可能对于服务端工程师来说更加"眼熟",部分前端工程师并不是十分了解,今天就来讲讲XSS攻击与CSRF攻击及防御方法 XSS XSS (Cross Site Sc ...
- Java项目:jsp+servlet图书管理系统
作者主页:源码空间站2022 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 使用jsp+servlet.layui.mysql完成的图书馆系统,包含用户图书借 ...
- Java Web——基于Jsp+Servlet的大学生社团管理系统
JavaWeb课程设计+JavaWeb实训作业:(Jsp+Servlet+Mysql+Tomcat+Idea) 项目类型:JAVA WEB项目 用户类型:3个角色(管理员+社长+学生) 主要技术:Js ...
- JAVA incept_(jsp+servlet)ERP管理系统 - WEB源码|JSP源码/Java|源代码 - 源码中国
(jsp+servlet)ERP管理系统 (jsp+servlet)ERP管理系统\erp (jsp+servlet)ERP管理系统\erp\.classpath (jsp+servlet)ERP管理 ...
- Java项目:JSP+servlet鲜花销售商城管理系统
作者主页:夜未央5788 简介:Java领域优质创作者.Java项目.学习资料.技术互助 文末获取源码 项目介绍 本系统分为前后台,普通用户可在前台页面购买鲜花,加入购物车.查看订单等:后台为管理员登 ...
- Java毕业设计——> JSP+Servlet+C3P0+Mysql实现的网上蛋糕店
这次分享一个蛋糕商场系统,还是很简单的系统.界面简洁但不粗糙.. 本系统基于JSP+Servlet+C3P0+Mysql+JDBC.涉及技术少,易于理解,适合JavaWeb初学者学习使用. 难度等级: ...
- CSRF攻击的原理和spring security对CSRF攻击的解决方法
对于CSRF攻击的原理,直接上图然后解释一下 一个用户通过浏览器成功登录一个网站,登陆成功后,服务器会返回一个该用户的唯一标识放入浏览器Cookie中,以此作为用户之后操作的唯一凭证.假设此时该用户在 ...
最新文章
- R语言NaN函数实战(计数、替换、删除)
- 第十五周项目二-洗牌(范形程序设计)
- 诗歌rails之 method_missing
- 《从paxos到zookeeper》学习笔记(一)
- FreeMarker基础语法教程
- iterm2自动补全_【超级实用】Iterm2 + ohmyzsh 打造强大的终端编辑器
- LWP 轻量级线程的意义与实现
- echarts的legend显示不全_Echarts【1、数据过多导致显示不全分页,2、数据展示探讨分析】...
- 两端对齐几种实现方案
- 字符串转换为小数(如String a=“123“),转换之后为123.0
- python json详解
- 新版贵金属喊单直播间 财经直播间系统 视频直播室在线喊单 源码
- Modbus RTU/ASCll+TCP+OPC电脑模拟+串口调试软件对接方案
- 2021年4月中国旅游行业网络关注度分析报告
- 微服务网关 vs K8s Ingress
- 编程语言之scala基础
- 【CF446B】 DZY Loves Modification
- VSCode中Markdown 无法显示图片
- 阿里数据库内核月报导航
- 做一个九宫格诗词答题小程序 (二)倒计时功能实现
热门文章
- Android:图片加载库Glide VS Picasso
- 出现opencv error: assertion failed..........错误时, 一步解决
- esp8266 阿里云 arduino_ESP8266接入阿里云——基于官方SDK接入阿里云串口获取云下发数据...
- 隧道技术_隧道施工关于新防水工艺技术
- 基于OpencvTensorflow实现实时查找停车位置
- spring cloud架构 - HongHu common-service 项目构建过程
- CSS代码检查工具stylelint
- 802.1X学习笔记
- php7实践指南图书手册
- 串口IDLE空闲中断+DMA实现接收不定长数据基于stm32cubemx