Web安全相关(一):CSRF/XSRF(跨站请求伪造)和XSS(跨站脚本)
XSS(Cross Site Script):跨站脚本,也就是javascript脚本注入,一般在站点中的富文本框,里面发表文章,留言等表单,这种表单一般是写入数据库,然后再某个页面打开。
防御:
1,在用户表单输入的数据进行过滤,对javascript进行转义,然后再存入数据库;
2,在信息的展示页面,也要进行转义,防止javascript在页面上执行。
CSRF(Cross-site request forgery):跨站请求伪造,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用,与XSS不用的是:XSS利用的是站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。
比如黑客A在自己的网站恶意注入了一个src的网址,是个恶意请求访问,类似银行转账,小白刚好登陆过自己银行系统,浏览器目前还保留有登陆过的cookie,小白点击了黑客A的网站里的银行恶意请求,此时该请求后台以为是小白自己想要访问的,因为带了小白自己的cookie,就去处理小白的请求了。但是黑客A拿不到服务器的response的,只是伪造了请求参数。
无论是GET请求还是POST请求都可能存在CSRF攻击,无论是php后台还是java后台,都是可以区分是哪种请求方式。如果是get请求,则在危险网站B中直接使用src标签进行get请求,如果是post请求则需要写一个form表单,进行post伪造请求,也是可以实现的。最常用的就是使用一个<img>标签,post请求比较麻烦。
CSRF攻击其实就是源于【WEB的隐式身份验证机制】。虽然可以保证一个请求是来源于某个用户的浏览器,但是却无法保证该请求是用户批准发送的!!!其根本原因就是Web站点所验证的是Web浏览器而非用户本身。
主要原因是同一个浏览器会共享cookie,防止CSRF的方法:只要确保请求是自己的站点发出的即可。例如:处理请求的时候加上验证:Cookie+Token。
防御:客户端和服务端
1,Request header里的Referer参数不同
Referer参数是请求源地址参数,黑客A的请求Url是自己的,而真正银行系统的源地址跟黑客A的不同,可以利用Referer的不同加以预防,但是Referer是浏览器的,黑客可能篡改,所以不能完全保证安全。【来源记录很容易伪造】
2,请求Url中加上Token验证
无论是get还是post请求加上一个server返回的token参数校验,Referer+token可以有效防御。
3,服务端:思想是在客户端加上伪随机数
验证码,每次用户提交的时候填写一个图片上的随机字符串,可以完全解决CSRF,但是用户体验不好。
token(不同的表单包含一个不同的伪随机数)
【完】
天才源于勤奋
Web安全相关(一):CSRF/XSRF(跨站请求伪造)和XSS(跨站脚本)的更多相关文章
- CSRF/XSRF 跨站请求伪造
CSRF/XSRF 跨站请求伪造 CSRF(Cross Site Request Forgery, 跨站域请求伪造)也称 XSRF, 是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安 ...
- Web安全之CSRF(跨站请求伪造)
CSRF(跨站请求伪造)概述 Cross-site request forgery 简称为"CSRF",在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺 ...
- web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)
web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...
- Tornado 的安全性保障机制Cookie XSRF跨站请求伪造阻断 &用户验证机制
6.1 Cookie 对于RequestHandler,除了在第二章中讲到的之外,还提供了操作cookie的方法. 设置/获取 注意:Cookie 在浏览器调试时, 只有在第一次访问该网站的时候获取到 ...
- CSRF(跨站请求伪造)攻击
CSRF(跨站请求伪造)攻击 CSRF(Cross Site Request Forgery,跨站请求伪造)是一种近年来才逐渐被大众了解的网络攻击方式,又被称为One-Click Attack或Ses ...
- revel框架教程之CSRF(跨站请求伪造)保护
revel框架教程之CSRF(跨站请求伪造)保护 CSRF是什么?请看这篇博文“浅谈CSRF攻击方式”,说的非常清楚. 现在做网站敢不防CSRF的我猜只有两种情况,一是没什么人访问,二是局域网应用.山 ...
- Django day15 (二) csrf的 跨站请求伪造 与 局部禁用 , 局部使用
一: csrf 的跨站请求伪造 二: csrf 的局部禁用 , 局部使用
- Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板
Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板 1.中间件(重要): 在Django的setting中有个MIDDLEWARE列表,里面的东 ...
- 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)
我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...
随机推荐
- spring-mvc基于xml的配置
配置web.xml <!--配置spring-MVC拦截--> <servlet> <servlet-name>DispatcherServlet</serv ...
- [LC] 156. Binary Tree Upside Down
Given a binary tree where all the right nodes are either leaf nodes with a sibling (a left node that ...
- Qt QString的arg()方法的使用
1.QString的arg()方法用于填充字符串中的%1,%2...为给定的参数,如 QString m = tr("); // m = "12:60:60: 2.它还有另外一种重 ...
- String的compareTo用法
String的compareTo其实就是依次比较两个字符串ASC码.如果两个字符的ASC码相等则继续后续比较,否则直接返回两个ASC的差值.如果两个字符串完全一样,则返回0.来看一下代码. publi ...
- 简单说说PHP优化
我们在编写程序时,总是想要使自己的程序占用资源最小,运行速度更快,代码量更少.往往我们在追求这些的同时却失去了很多东西.下面我想讲讲我对PHP优化的理解.优化的目的是花最少的代价换来最快的运行速度与最 ...
- iOS应用程序开发——解决iOS7之前版本与之后版本下app启动图片跳动问题
之前开发的app都是针对iOS6(兼容iOS5),所以在开发之初也出现了启动图片向下跳动的现象,通过网上的解决方法,代码中做了处理(“-20”): _imageView.frame = CGRectM ...
- 整合SSM遇到的错误,数据库连接失败问题集合
Could not get JDBC Connection; nested exception is java.sql.SQLException: Connections could not be a ...
- 吴裕雄--天生自然python学习笔记:Python3 SMTP发送邮件
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一 ...
- unique()函数使用
前提:要先令容器有序. unique的作用是“去掉”容器中相邻元素的重复元素(不一定要求数组有序),它会把重复的元素添加到容器末尾(所以数组大小并没有改变),而返回值是去重之后的尾地址. 用法:uni ...
- react和vue
react整体的思路就是函数式,所以推崇纯组件,数据不可变,单向数据流,当然需要双向的地方也可以做到,比如结合redux-form,而vue是基于可变数据的,支持双向绑定.react组件的扩展一般是通 ...