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.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...
随机推荐
-
PAT自测_打印沙漏、素数对猜想、数组元素循环右移、数字加倍重排、机器洗牌
-自测1. 打印沙漏() 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号 ...
-
c#文本框限制输入内容
//限制输入不能为中文和全角 private void zhbh_KeyPress(object sender, KeyPressEventArgs e) { ...
-
JQuery文件上传插件uploadify在MVC中Session丢失的解决方案
<script type="text/javascript"> var auth = "@(Request.Cookies[FormsAuthenticati ...
-
自动化mobile测试
MicroFocus推出手机自动化测试工具 - Silk Mobilehttp://automationqa.com/forum.php?mod=viewthread&tid=1068& ...
-
sql语句如何获得当前日期
当做到报表的时候需要sql获得当前日期?怎么获得? 看一下getdate()函数 declare @DateNow nvarchar(10) set @DateNow=CONVERT(varchar( ...
-
JavaScript中的重载解读
在JavaScript中有一种特殊的数据类型---Function类型,JavaScript的每个函数都是Function类型的实例.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针,不会与 ...
-
1.使用C++封装一个链表类LinkList
使用C++封装一个链表类LinkList.写出相应一个测试用例 链表需要提供 添加 修改删除 除重 合并 排序创建 销毁等接口. 不能调用库函数或者使用STL等类库 题目延伸********** ...
-
Mysql 根据一个表数据更新另外一个表
方法一: update 更新表 set 字段 = (select 参考数据 from 参考表 where 参考表.id = 更新表.id); update table_2 m set m.colum ...
-
c++中好用的函数
isdigit()返回是否是数字字符: isalpha()返回是否是字母字符: isupper()返回是否是大写字母: islower()返回是否是小写字母:
-
L2-007. 家庭房产(并查集)*
L2-007. 家庭房产 参考博客 #include <iostream> #include <cstdio> #include <cstring> #includ ...