首页 > 安全知识 > 常见的开发漏洞介绍  跨站请求伪造(CSRF)漏洞

常见的开发漏洞介绍  跨站请求伪造(CSRF)漏洞

2024-12-23 15:53:31
  1. 跨站请求伪造CSRF)漏洞
    1. 原理
      • CSRF攻击是指攻击者利用用户在目标网站已登录的状态,通过欺骗用户访问一个恶意网站,该恶意网站向目标网站发送伪造的请求,让目标网站以为是用户自己发起的请求,从而执行一些非用户本意的操作。例如,攻击者在恶意网站上放置一个隐藏的<form>表单,表单的action指向银行转账的URL,当用户访问这个恶意网站时,表单会自动提交,导致用户的银行账户进行转账操作。
    2. 防范措施
      • 使用CSRF令牌(Token):在用户访问页面时,服务器生成一个唯一的CSRF令牌,并将其包含在页面的表单或请求头中。当用户提交表单或发出请求时,服务器验证这个令牌是否有效。例如,在一个基于Python Flask的应用中:
         
        from flask import Flask, session, request, abort app = Flask(__name__) app.secret_key = 'a_secret_key' @app.route('/transfer', methods=['POST']) def transfer(): csrf_token = request.form.get('csrf_token') if csrf_token!= session.get('csrf_token'): abort(403) # 正常的转账逻辑 return '转账成功' @app.route('/') def index(): session['csrf_token'] = generate_csrf_token() return render_template('index.html', csrf_token=session['csrf_token'])
         
      • 检查请求来源(Referer):虽然这种方法不是完全可靠,但可以作为一种辅助手段。通过检查请求的Referer头部,确保请求来自于合法的来源。不过,有些浏览器可能会限制Referer的发送,或者攻击者可能会伪造Referer
使用 Ctrl+D 可将网站添加到书签
收藏网站
扫描二维码
关注早实习微信公众号
官方公众号
Top