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(跨站脚本)的更多相关文章

  1. CSRF/XSRF 跨站请求伪造

    CSRF/XSRF 跨站请求伪造 CSRF(Cross Site Request Forgery, 跨站域请求伪造)也称 XSRF, 是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安 ...

  2. Web安全之CSRF(跨站请求伪造)

    CSRF(跨站请求伪造)概述 Cross-site request forgery 简称为"CSRF",在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺 ...

  3. web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)

    web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...

  4. Tornado 的安全性保障机制Cookie XSRF跨站请求伪造阻断 &用户验证机制

    6.1 Cookie 对于RequestHandler,除了在第二章中讲到的之外,还提供了操作cookie的方法. 设置/获取 注意:Cookie 在浏览器调试时, 只有在第一次访问该网站的时候获取到 ...

  5. CSRF(跨站请求伪造)攻击

    CSRF(跨站请求伪造)攻击 CSRF(Cross Site Request Forgery,跨站请求伪造)是一种近年来才逐渐被大众了解的网络攻击方式,又被称为One-Click Attack或Ses ...

  6. revel框架教程之CSRF(跨站请求伪造)保护

    revel框架教程之CSRF(跨站请求伪造)保护 CSRF是什么?请看这篇博文“浅谈CSRF攻击方式”,说的非常清楚. 现在做网站敢不防CSRF的我猜只有两种情况,一是没什么人访问,二是局域网应用.山 ...

  7. Django day15 (二) csrf的 跨站请求伪造 与 局部禁用 , 局部使用

    一:  csrf 的跨站请求伪造 二: csrf 的局部禁用 , 局部使用

  8. Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板

    Django中间件,CSRF(跨站请求伪造),缓存,信号,BootStrap(模板)-响应式(栅格)+模板 1.中间件(重要): 在Django的setting中有个MIDDLEWARE列表,里面的东 ...

  9. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

随机推荐

  1. java中的赋值

    java中的赋值使用符号“=”. 按照java编程思想的解释:它的意思是“取等号右边的值,把它复制给左边”. 当然左边必须是一个明确的,已命名的变量. 基本类型: int a=2; int b=3; ...

  2. vue2.0学习之路由

    下载vue-router: cnpm install vue-router --save router/main.js /*引入所需要的组件*/ import VueRouter from 'vue- ...

  3. 95)PHP,文件上传知识和代码

    首先是知识总结: 上传: 从浏览器端传输的到服务器端. 请求时: 数据从浏览器端传输到服务器端. 可见: 上传,发生在浏览器向服务器发出请求过程中. 文件,对于浏览器来讲,就是表单中的一个特殊类型的数 ...

  4. 学习python-20191108(1)Mysql、Flask

    一.使用pymysql模块操作MYSQL 导入pymysql模块: pip install pymysql 1.增删改 import pymysql # 定义数据库连接信息 config = {    ...

  5. keras使用、函数功能

    #1. keras.engine.input_layer.Input() def Input(shape=None, batch_shape=None,   name=None, dtype=None ...

  6. linux下如何查看服务器的硬件配置信息

    性能测试时一定要确定测试环境和的硬件配置.软件版本配置,保证和线上一致,才更接近真实环境. 那么linux下如何查看服务器的硬件配置信息?? 一.查看cpu信息 1.所有信息 lscpu [root@ ...

  7. poj 1659 Frog's Neighborhood

    未名湖附近共有N个大小湖泊L1, L2, -, Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤ i ≤ N).如果湖泊Li和Lj之间有水路相连,则青蛙Fi和Fj互称为邻居.现在已知每只 ...

  8. hadoop创建两大错误:Bad connection to FS. command aborted. exception和Shutting down NameNode at hadoop

    1.问题目录表: Error代码   failed on connection exception: java.net.ConnectException: Connection refused 3.  ...

  9. win7电脑磁盘文件以分组方式展现解决方案

    问题: win7电脑磁盘文件以分组方式展现,具体如下: 解决: 右键磁盘空白处-->分组依据-->选择无:图解如下:

  10. python 获取表单的三种方式

    条件:urls.py文件中配置好url的访问路径.models.py文件中有Business表. 在views.py文件中实现的三种方式: from app01 improt models def b ...