CSRF(跨站请求伪造)攻击是一种非常常见的网络攻击方式。攻击者利用受害者的浏览器等客户端软件自动发送任意请求,从而达到攻击目的。为了防止这种攻击,常见的解决方案之一是采用CSRF Tokens和Session Cookies。
CSRF Tokens是一段随机生成的字符串,用于验证请求的合法性。每次发送请求时,都需要将该Token值作为请求参数或者头部信息发送给后端进行验证。如果Token不正确,则请求将被拒绝。
Session Cookies是一个存储在用户浏览器中的信息,用于维护用户的登录状态。当用户登录成功后,服务器会在Session中记录相关信息,并将Session ID存储在Cookies中。每次请求时,需要将该Session ID作为Cookies发送给服务器进行验证。如果Session ID不正确,则请求将被拒绝。
一般来说,结合使用CSRF Tokens和Session Cookies能够更好地保护应用程序免受CSRF攻击。示例代码如下所示:
生成CSRF Token
import secrets
csrf_token = secrets.token_hex()
使用Session记录用户登录状态
from flask import Flask, session
app = Flask(name)
app.config['SECRET_KEY'] = 'random string'
@app.route('/login', methods=['POST'])
def login():
# 登录验证成功后,将相关信息记录在Session中
session['username'] = 'user1'
return 'Login successfully'
发送请求时添加CSRF Token和Session ID
import requests
url = 'http://localhost:5000'
response = requests.post(url + '/login', data={'username': 'user1', 'password': 'pass1'}, headers={'X-CSRF-TOKEN': csrf_token}, cookies={'session': 'session_id'})