web安全问题 csrf

<script>
document.write(`
<form name="commentForm" target="csrf" method="post" action="http://localhost:1521/post/addComment">
<input name="postId" type="hidden" value="13">
<textarea name="content">来自csrf</textarea>
</form>
`
);
var iframe = document.createElement('iframe');
iframe.name = 'csrf';
iframe.style.display = 'none';
document.body.appendChild(iframe);
setTimeout(function(){
document.querySelector('[name=commentForm]').submit();
},1000)
</script>
<img src="http://localhost:1521/ajax/addComment?postId=13&content=123123">
<a href="http://localhost:1521/ajax/addComment?postId=13&content=123123"></a>

1.原理

用户登录A网站 - A网站确认身份 - B网站向A网站发起请求(带A网站身份)

cookie会保留在网页中

2.CSRF攻击危害

  • 利用用户登录状态 (盗取用户资金 转账消费)
  • 用户不知情 (冒充用户发帖背锅)
  • 完成业务请求 (损坏网站声誉)

www.a.com前端 <=> www.a.com后端

www.b.com前端 => www.a.com后端

B网站向A网站请求带A网站Cookies 不访问A网站前端 refer为B网站

csrf防御攻击

1.cookies进行设置 只是chrome支持

sameSite: 'strict'

2.在前端页面加入验证信息

3.验证码 (前后端 图形验证码会降低用户体验)

4.token 随机字符串

  • 必须经过目标网站前端才能获取token

token

var csrfToken = parseInt(Math.random()*999999,10);
cookies.set('csrfToken',csrfToken); //放到cookies this->ajaxReturn('要有token') 前台不用显示 hidden

post的时候校验

post的token 和 cookie里面的token

如果是ajax请求

<meta name="csrf_token" content="">

js获取之后在后台跟cookies里面的值对比

用户打开很多窗口 提交在前面的token 只有最后一个表单可以成功提交 token在cookie中只有一个

解决方法

 $_SESSION['SESSION_KEY.$form_name']

判断refer

var refer = request.headers.referer
if(!/^https?\/\/localhost/.test(referer)){
throw new Error()
}

php防御CSRF

1.Cookie sameSite属性

2.HTTP refer头

<?php
//获取referer头
if($_SERVER['HTTP_REFERER']){
$isLegal = strpos($_SERVER['HTTP_REFERER'],'http://websecurity.local/') === 0;
var_dump($isLegal);
}

3.token 一份给cookie 一份给表单

$csrfToken = "1231321";
setcookie('csrfToken',$csrfToken); $_POST['csrfToken'] $_COOKIE['csrfToken']对比

web安全问题-csrf的更多相关文章

  1. web安全问题-cookie

    web安全问题 cookie 1.cookies只能设置过期 不能删除 <script> now.toGMTString() => 事件可以用来设置cookie document.c ...

  2. WEB安全问题

    WEB安全问题我没太多经验,但是这块内容还是很重要,所以必须要了解学习一下. 简单总结了一下,分成以下5类, 1.DDOS,瘫痪式攻击,解决方法是记录异常请求的ip地址,主动拒绝或者将攻击ip添加到防 ...

  3. Web API CSRF保护实现

    Web API CSRF保护实现 这次自己实现了类似jQuery中ajax调用的方法,并且针对RESTFul进行了改造和集成,实现的A2D AJAX接口如下: $.ajax.RESTFulGetCol ...

  4. web安全问题分析及处理

    前言 这是我观看了<前端漏洞分析及处理-蔡慧芨>公开课之后的一个总结及简单实践体会.在可能的情况下我会把他们都实际操作一遍,更加深刻地体会前端安全的重要性. web安全问题有哪些 XSS- ...

  5. web 安全问题(一):CSRF 攻击

    什么是CSRF CSRF是怎么产生的 CSRF的攻击对象 CSRG的攻击手段 CSRF的防御措施 什么是CSRF 全称是(Cross Site Request Forgery)跨站请求伪造.也就是恶意 ...

  6. WEB安全--CSRF剖析

    CSRF攻击:攻击者构造合法的HTTP请求,随后利用用户的身份操作用户帐户的一种攻击方式. 一.CSRF攻击原理CSRF的攻击建立在浏览器与Web服务器的会话中:欺骗用户访问URL.二.CSRF攻击场 ...

  7. 小白日记50:kali渗透测试之Web渗透-CSRF

    CSRF CSRF原理:经常与XSS混淆. 从信任的角度进行区分:XSS:利用用户对站点的信任:CSRF:利用站点对已经身份认证的信任(有一定的信任)[默认情况:站点不信任客户端] 结合社工在身份认证 ...

  8. 三种常见的Web安全问题

    XSS漏洞 1.XSS简介 跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式. XSS是指恶意攻击者利用网站没有对 ...

  9. web安全CSRF和XSS

    web端的安全攻击有CSRF和XSS两种,将通过以下三个方面介绍这两种安全攻击: 1.基本概念和缩写 2.攻击原理 3.防御措施 CSRF  1.基本概念和缩写 CSRF(Cross-site req ...

随机推荐

  1. DataGridView风格设置

    http://blog.csdn.net/wangzhen209/article/details/51744518 http://www.cnblogs.com/hanpanpan

  2. Solaris11.1网络配置(Fixed Network)

    Solaris11的网络配置与Solaris10有很大不同,Solaris11通过network configuration profiles(NCP)来管理网络配置. Solaris11网络配置分为 ...

  3. 问题:PLS-00204: 函数或伪列 'EXISTS' 只能在 SQL 语句中使用;结果:PL/SQL中不能用exists函数?

    怎么写了一个语句带出这样的结果. 语句: if exists (select * from sysdatabases where name='omni') then 结果: ERROR 位于第 4 行 ...

  4. Shell编程进阶 1.5 if逻辑判断

    逻辑判断 vim if.sh #!/bin/bash ## ## a= ] then echo "a>3" fi sh if.sh a>3 vim if2.sh #!/ ...

  5. Mysql 不存在则插入,存在则更新

    )) BEGIN ) ; END 开始写了一大堆的代码来实现,原来还有这种方法,惊讶~~~ 如果不存在,就插入一条数据:如果存在,更新某个字段. on duplicate key update: my ...

  6. 通过XmlSerializer接口来生成xml文件

    xml文件我们可以用来保存一些数据.例如用来备份短信.这个例子中,我们就用XmlSerializer接口来实现一个备份短信的程序.当然了,为了程序简单化,这个程序我们并不是真的去备份短信.我们通过一个 ...

  7. css之content

    content 属性与 :before 及 :after 伪元素配合使用,来插入生成内容.该属性用于定义元素之前或之后放置的生成内容.默认地,这往往是行内内容,不过该内容创建的框类型可以用属性 dis ...

  8. JS获取页面URL信息

    下面我们举例一个URL,然后获得它的各个组成部分: http://i.cnblogs.com/EditPosts.aspx?opt=1 window.location.href (设置或获取整个 UR ...

  9. CUDA编程接口:异步并发执行的概念和API

    1.主机和设备间异步执行 为了易于使用主机和设备间的异步执行,一些函数是异步的:在设备完全完成任务前,控制已经返回给主机线程了.它们是: 内核发射; 设备间数据拷贝函数; 主机和设备内拷贝小于64KB ...

  10. 前端学习笔记2017.6.21-引入JS文件的方法

    通过网络引入JS文件 <script src="https://www.xxx.com/aaa.js"></script> 如果是引入本地JS文件 < ...