zoukankan      html  css  js  c++  java
  • web的脚本安全-CSRF

    CSRF,即Cross-site request forgery,中文一般叫跨站请求伪造。

    攻击原理是,用户在A网站(登录,之后打开一个B网站,B网站的脚本(或HTML标签)向A网站发送一个请求,这个请求会自动携带用户的COOKIE,如果这时A网站验证成功,则完成了攻击。

    那么,具体的攻击过程是什么?

    1)用户登录A网站。

    A网站提供一个修改用户名的api,例如http://A.com/modName?newname=test1。这个api会验证cookie,验证通过之后则修改用户名。

    2)之后用户登录B网站,B网站的里有一段代码如下(可以成功把用户在A网站的名字修改为test2,因为发往A.com的请求都会自动带上A.com的cookie):

    <img src="http://A.com/modName?newname=test1" />

    很简单吧,但这就完成了一次跨站请求伪造的攻击。我们可以看出攻击要点在:

    1)A网站的服务器对cookie的简单直接验证。

    2)用户登录网站A之后能引导TA打开B网站。

    攻击简单,解决方案也很简单:

    1,保证A网站的所有api接口都不只是通过验证cookie就完成用户确认。

    2,前端与后端配合,使用同一个算法,在发送请求前,居于cookie再产生一个编码(也可以叫token)发送到服务器端,服务器端对这个token进行验证。

    为什么能解决问题?因为网站B虽然能伪造请求(即修改参数),但网站B获取不了A网站的cookie,这样网站B就伪造不出这个token,A网站获取不到这个token则无法完成用户确认。

    PS:当然,服务器端还可以通过检测refer这个属性来防范CSRF,但这个可能会把部分用户正常请求当成非法请求,例如https转到http。

  • 相关阅读:
    资源-python 视频下载大全
    ubuntu 16.04(操作应用) -软件卸载
    资源-简历的相关知识
    centos (命令操作)-crontab命令
    ubuntu 16.04 (软件应用)-输入法
    ntp时间同步
    lvm空间扩容
    目录知识
    Linux下安装maven
    elasticsearch安装pinyin模块
  • 原文地址:https://www.cnblogs.com/kevinboy/p/3803025.html
Copyright © 2011-2022 走看看