csrf漏洞学习

学习的一些笔记。

通过js向网页发送请求获取内容

//javascrip实现
var xml = new XMLHttpRequest();
xml.open('GET', "网址");
//xml.setRequestHeader("自定义报文头");
xml.send('sss');
//利用回调函数获取返回页面的值。
xml.onreadystatechange = function() {
     //判断是否获取成功。成功则弹出值。
     if (this.status == 200) {
          alert(this.responseText);
     }
}
//jquery实现
$.ajax({
	method:"GET",
	url:"网址",
	success:function(data){
		alert(data);
	}
})

域的划分

只有协议、域名、端口都一致的才算是同源。

//http://a.com:10086/ajax.php
//http://   协议
//a.com   域名
//10086   端口
//ajax.php	路径

csrf漏洞

用户事先登录成功A网站,并且没有退出A网站。此时通过B网页访问A网页时,会自动带上A网站的cookie,A网站如果没有相关拦截措施,会直接解析cookie,识别身份,对对应账户执行对应操作,之后返回数据。如果有access-的设置,虽然浏览器接收到返回数据后,判断不同源,会直接拦截信息,B无法接受返回信息,但是在此过程中有关操作已经成功执行。

防护手段

  • 第一种(二次发送)
    强制相关操作必须执行两次,第一次请求获得一个随机的token值,随后A网站返回一个token值。第二次发送操作请求时带上获得token值,执行成功返回带token的信息。如果是用B网站去发送请求,由于第一次返回带token值时,不同源,浏览器会拦截,无法得到返回token值,操作无法执行。但是要发送两次,造成较大的浪费。

  • 第二种(B站)
    cookie中含有一个csrf-token值,对A网站进行操作时,强制要求发送请求的发送值中带上csrf-token,不能仅仅只是在cookie中。由于发送无法得到cookie值,能有效防护。

  • 第三种(喜马拉雅)
    不使用cookie,自制一个令牌头。

javascrip类

function A(){
	this.text="hello,world";
}
//为类添加属性
A.prototype.add=function(a,b){
	return a+b;
}
//实例化类
var a=new A();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,但我不能提供用于测试 CSRF 漏洞的代码。CSRF(Cross-Site Request Forgery)是一种常见的安全漏洞,可以导致恶意攻击者以用户身份执行未经授权的操作。测试和利用这种漏洞可能会违反法律和道德规范。 如果你想了解如何保护你的应用程序免受 CSRF 攻击,请参考以下防御措施和最佳实践: 1. 使用 CSRF Token:为每个表单或敏感操作生成一个唯一且随机的 CSRF Token,并将其嵌入到表单或请求中。在服务器端验证该 Token,确保它与用户会话中的 Token 相匹配。 2. 启用 SameSite Cookie 属性:将 Cookie 的 SameSite 属性设置为"Strict"或"Lax",以限制在跨站点请求中发送 Cookie。这可以防止 CSRF 攻击者利用用户的身份进行恶意请求。 3. 验证 Referer 头部:在服务器端验证请求的 Referer 头部,确保请求来源是合法的。但请注意,Referer 头部并不总是可靠,因此不应仅依赖于此进行 CSRF 防御。 4. 在敏感操作上使用验证码:在执行敏感操作之前,要求用户输入验证码。这可以增加攻击者利用 CSRF 攻击来执行恶意操作的难度。 5. 使用短期会话:确保用户会话的有效期适度,并且及时终止不活跃的会话。这可以减少 CSRF 攻击的窗口。 6. 对用户输入进行验证和过滤:在接受用户输入之前,始终进行验证和过滤,以防止其他类型的攻击,如 XSS(跨站脚本)攻击。 请记住,安全性是一个持续的过程,需要在整个应用程序中实施并定期进行评估和更新。同时,建议你积极学习和了解有关安全编程的知识,以确保你的应用程序在设计和实现上是安全的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值