先做个名词解释:

XSS:跨站脚本(Cross-site scripting)

CSRF:跨站请求伪造(Cross-site request forgery)

看了估计也不清楚什么意思吧?

那么,详细解释下:

XSS: 其实就是Html的注入问题,攻击者的输入没有经过严格的控制进入了数据库,最终显示给来访的用户,导致可以在来访用户的浏览器里以浏览用户的身份执行Html代码。

一个例子:某文章的评论区,某个攻击者输入一段js代码作为评论:windows.alert("我是攻击者"); , 这段评论提交之后,服务端没有经过严格校验,就直接入库,下次有用户浏览这个文章时,这段评论会加载并作为html、js被浏览器解释执行,然后,用户就看到了“我是攻击者”的弹窗了。

以上是一个无恶意的攻击例子,如果攻击者有恶意的话。。。获取你的cookie,使用cookie登录你的账户,转账。。

CSRF:主要利用用户浏览器的cookie来进行的攻击行为。

假设有恶意网站X,页面上有这么一段代码:

<img src=http://www.mybank.com/Transfer.php?toBankId=11&money=1000>

这段代码会尝试从mybank中,往我的账户转账1000元。这个行为大部分情况会失败,因为这个转账接口是需要登录后的授权信息的。但是,

如果用户先登录了mybank, 然后不小心(比如在qq收到连接并点击了)打开恶意网站X,那么,这个攻击就生效了。登录mybank后,会产生mybank的授权cookie, 网站X请求mybank时,浏览器会带上授权cookie,导致被攻击。

如何防御

xss相对比较好防御,只要对输入进行过滤即可,现在很多webframework都提供了输入校验和xss过滤工具

csrf就不是那么好防御了。它是请求伪造,服务端要识别出这个是伪造的请求是有难度的,这个大概有几个防范思路

1、提高伪造的难度,比如不要随便通过HTTP GET来提交、操作数据,GET太容易被攻击了。GET方式的url可以轻易被各种途径传播。

2、服务端增加请求令牌, 这个令牌不写入cookie,每次返回给用户的页面带有这个随机生成的令牌,用户提交数据时,这个令牌作为隐藏域也一同提交,只有验证令牌一致,才可提交成功。嗯,增加了破解难度,但也不是无法破解,可以通过获取htm代码的方式获取令牌。

3、使用验证码, 这个方式比较安全了, 复杂的验证码不是那么容易破解的,有时候连人自己都认不出来。所以同样的,这种方式也给了用户非常不好的使用体验,慎重使用。

4、增加referer来源页判断,可以防一些小白(其实很多攻击者都是小白,从这点上看,还是很有效的)。

XSS 与 CSRF 跨站攻击的更多相关文章

  1. XSS/CSRF跨站攻击和防护方案

    Xss(Cross Site Scripting 跨站脚本攻击)/CSRF(Cross-site request forgery 跨站请求伪造),它与著名的SQL注入攻击类似,都是利用了Web页面的编 ...

  2. SpringSecurity框架下实现CSRF跨站攻击防御

    一.什么是CSRF 很多朋友在学习Spring Security的时候,会将CORS(跨站资源共享)和CSRF(跨站请求伪造)弄混,以为二者是一回事.其实不是,先解释一下: CORS(跨站资源共享)是 ...

  3. web前端安全 XSS跨站脚本 CSRF跨站请求伪造 SQL注入

    web安全,从前端做起,总结下web前端安全的几种技术: 1,XSS XSS的全称是Cross Site Scripting,意思是跨站脚本,XSS的原理也就是往HTML中注入脚本,HTML指定了脚本 ...

  4. Nancy启用跨站攻击防护(CSRF)

    什么是CSRF(跨站攻击) 可能很多人已经对CSRF有所了解,就简单的介绍下: CSRF全程是 Cross-Site Request Forgery .大概意思就是在登录用户不知情的情况下,由一个网站 ...

  5. XSS与CSRF两种跨站攻击比较

    XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery) 在那个年代,大家一般用拼接字符串的方式来构造动态SQL 语 ...

  6. 总结 XSS 与 CSRF 两种跨站攻击

    前言 在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了 ...

  7. 总结XSS与CSRF两种跨站攻击

    XSS:跨站脚本(Cross-site scripting),实际应是"CSS",但由于和层叠样式表CSS名称冲突,故改为"XSS" CSRF:跨站请求伪造(C ...

  8. XSS 与 CSRF 两种跨站攻击

    在前几年,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式, 但是现在参数化查询 已经成了普遍用法,我们已经离 SQL 注入很远了.但是历史同样悠久的 ...

  9. XSS与CSRF两种跨站攻击总结

    在那个年代,大家一般用拼接字符串的方式来构造动态 SQL 语句创建应用,于是 SQL 注入成了很流行的攻击方式.在这个年代, 参数化查询 [1] 已经成了普遍用法,我们已经离 SQL 注入很远了.但是 ...

随机推荐

  1. python中requests的用法

    一个最简单的demo: html = requests.get('http://www.cnblogs.com/liaocheng/p/5215225.html') return html.text ...

  2. MySQL -- 关闭 binlog

    LNMP一键安装包安装的MySQL默认是开启了日志文件的,如果数据操作比较频繁就会产生大量的日志,在/usr/local/mysql /var/下面产生mysql-bin.0000* 类似的文件,而且 ...

  3. 51nod--1006 最长公共子序列Lcs (动态规划)

    题目: 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个 ...

  4. 【原创】大数据基础之CM5(Cloudera Manager)+CDH5离线安装

    CM/CDH 5.16.1 CM官方:https://www.cloudera.com/products/product-components/cloudera-manager.html CDH官方: ...

  5. vue源码分析之目录架构(一)

    compiler compiler 目录包含 Vue.js 所有编译相关的代码.它包括把模板解析成 ast 语法树,ast 语法树优化,代码生成等功能 core core 目录包含了 Vue.js 的 ...

  6. Vertx.vertx()初始框图和模块

    Vertx.vertx()实例 一.构造方法 1. VertxImpl构造方法 选择 transports protocol , default select 模型 if (options.getPr ...

  7. Mac新系统常用设置

    一.MAC OS整个系统的隐藏文件显示可见,在终端下输入以下命令defaults write com.apple.finder AppleShowAllFiles -bool true 二. 在MAC ...

  8. 设计模式学习之享元模式(Flyweight,结构型模式)(20)

    转:http://terrylee.cnblogs.com/archive/2006/03/29/361767.html 摘要:面向对象的思想很好地解决了抽象性的问题,一般也不会出现性能上的问题.但是 ...

  9. 我的Python笔记

    声明:本文整理借鉴金角大王的Python之路,Day1 - Python基础1,仅供本人学习使用!!! 本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程 ...

  10. LBS(Location Based Service)(基于位置的服务)

    LBS(Location Based Service)(基于位置的服务) Android 中定位方式基本可以分为两种:GPS定位,网络定位. GPS定位的工作原理是基于手机内置的GPS硬件直接和卫星进 ...