防止CSRF跨域攻击

CSRF主要是指有些人使用自动表单提交不停的请求你的网站,或者使用非法请求连接访问站点,防止这些攻击也比较容易就是在自己网站做一个token验证基本就防止了非法请求,正常清楚我们生成的唯一token进行行为验证,如果token通过则执行操作,否则就不通过,防止了无限请求刷自己网站的情况。

首先生成token存到session中:

index.php

                                           //生成一个密匙
					    function create_key()  
					    {  
					         $key = md5(((float) date("YmdHis") + rand(100,999)).rand(1000,9999));  
					        return $key;  
					    }  
					    //产生token
					    function create_token(){

					    		$key = create_key();
					    		$salt = 'MYKEY';
					    		$token = md5($salt.$key);
					    		return $token;

					    }

					    session_start();
					    $_SESSION['client_key'] = create_token();
					    $_SESSION['server_key'] = $_SESSION['client_key'];
					    header("Location:login.php");
login.php

<!DOCTYPE html>
<html>
<head>
	<title>csrf测试</title>
</head>
<body>
<?php 
   session_start();
   $key = $_SESSION['client_key'];
  
?>
		<form action="dologin.php" method="post">
			用户名:<input name="name" type="text"/><br/>
			密码:<input name="pass" type="text"/><br/>
			<input  type="hidden" name="csrf" value="<?php echo $key; ?>" /><br/>
			<input type="submit"  value="提交" />
		</form>
		
		
</body>
</html>
dologin.php

<?php 


		sleep(1);
		//print_r($_POST);
		extract($_POST);
		//判断key是否相等
		session_start();
		$server_key = $_SESSION['server_key'];
		//判断是否有csrf参数
		if (!array_key_exists('csrf', $_POST)) {
			
			die("未知请求");
		}
		else if($server_key != $csrf){

				die("参数错误");
		}else{

			
			die("正确请求业务逻辑处理");
		}
?>
这些代码只是简单的验证了一下token,实际开发中,token的生成可能规则不是这么简单,这样写就防止,不法分子使用自动表单来不停的对网站发送请求了,那个防刷新表单重复提交其实,原理都差不多,不太难理解,大家随意参考下吧。

测试结果:

非法请求:

带了csrf参数,但是token不正确:

正确请求:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CSR(客户端渲染)是指 JavaScript 应用程序在浏览器中运行并生成用户界面的方式。因为浏览器有同源策略的限制,导致请求无法直接发送。资源共享(CORS)是浏览器用来解决这个问题的技术,服务器端可以通过在响应中设置特定的 HTTP 头来允许请求。 攻击是指攻击者利用了浏览器的同源策略限制来获取用户敏感信息。常见的有XSS(站脚本攻击)和CSRF站请求伪造)。为了防止攻击,应当使用CORS机制严格限制哪些可以访问服务器,同时应当使用防站请求伪造(CSRF)技术来防止攻击者伪造请求。 ### 回答2: CSR(Cross-Site Request)是一种安全机制,旨在防止请求和攻击请求是指Web应用程序在一个名下发送HTTP请求,但目标资源位于另一个不同的名下。这种请求通常是由于前端页面中的JavaScript代码发送的,然而,由于浏览器的同源策略,请求默认是被禁止的。 同源策略是一种浏览器安全机制,用于限制从一个源(协议+名+端口)加载的文档或脚本如何与来自另一个源的资源进行交互。它的目的是保护用户信息的安全,防止恶意攻击者利用其他网站的漏洞来获取用户敏感数据。 为了实现请求,可以使用CORS(来源资源共享)机制。CORS通过在HTTP响应头中添加特定的字段,使服务器能够允许请求。前端页面发送的请求会先向服务器发送一个预检请求(OPTIONS请求),服务器通过响应头中的字段来确定是否允许该请求。 然而,即使使用了CORS,仍然需要注意攻击(Cross-Site Scripting,XSS)的风险。XSS攻击是指攻击者通过注入恶意脚本代码到受信任网站的合法页面中,来获取用户的敏感信息或执行其他恶意操作。为了防止XSS攻击,可以对用户输入进行严格的过滤和验证,并在输出时进行适当的转义。 此外,还可以使用其他安全机制来增强安全性,如使用安全的HTTP头(如X-Frame-Options,Content-Security-Policy等),限制特定名下的资源访问。同时,定期更新和维护服务器和应用程序以修补潜在的安全漏洞,也是非常重要的。 总而言之,CSR可以通过CORS机制来防止请求,并采取其他安全措施来防止攻击,保护用户的信息安全。 ### 回答3: CSR(Cross-Site Request)是一种安全机制,用于防范请求和攻击请求是指在Web应用中,如果一个请求的源和目标位于不同的名下,浏览器会根据同源策略(Same-Origin Policy)限制请求的发送和响应。同源策略要求请求的协议、名和端口必须完全相同,否则浏览器会阻止该请求的发送。这种限制能够防止恶意网站通过浏览器发送请求获取用户的敏感信息。 为了解决请求的问题,可以使用CSR机制。CSR机制允许Web应用向另一个名发送请求,并获取响应。在CSR机制中,Web应用通过在请求头中添加一些安全标记(如Origin header),告知服务器请求的来源。服务器在接收到请求后,会检查Origin header的值,然后根据策略决定是否允许请求。 另外,攻击也是一种常见的安全威胁,如站脚本攻击(Cross-Site Scripting,XSS)、站请求伪造(Cross-Site Request Forgery,CSRF)等。这些攻击利用了Web应用对请求的信任,将恶意代码或请求发送到目标网站,以获取用户的敏感信息或执行恶意操作。 CSR机制可以有效防止请求的产生,并提供一定程度的安全保护。通过限制请求的访问,Web应用能够更好地保护用户的数据安全和隐私,并防范攻击。然而,为了进一步加强安全性,开发者还应该采取其他安全措施,如输入验证、输出编码、会话管理等,以全面保护Web应用的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值