- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE1
PAGE1
CSRF防护概述
1CSRF攻击原理
CSRF(Cross-SiteRequestForgery,跨站请求伪造)是一种攻击方式,它利用用户在浏览器中已经登录的会话,通过恶意网站或链接,诱使用户执行非预期的操作。这种攻击之所以有效,是因为浏览器在发送请求时会自动包含任何与请求相关的cookie,包括那些用于保持用户登录状态的cookie。攻击者可以构造一个恶意的HTML页面或链接,当用户访问时,页面或链接会触发一个在用户不知情的情况下发送到另一个网站的请求,由于用户的cookie被自动发送,服务器会认为这个请求是合法的,从而执行了攻击者预设的操作。
1.1示例:CSRF攻击构造
假设有一个银行网站,其转账功能的URL如下:
POST/transferHTTP/1.1
Host:
Content-Type:application/x-www-form-urlencoded
amount=100to=attacker_account
攻击者可以构造一个HTML页面,包含一个img标签或form标签,当用户访问这个页面时,浏览器会自动发送一个POST请求到银行网站,执行转账操作。
!--恶意HTML页面--
formaction=/transfermethod=POST
inputtype=hiddenname=amountvalue=100
inputtype=hiddenname=tovalue=attacker_account
imgsrc=/logo.pngonerror=this.parentNode.submit()
/form
在这个例子中,img标签的onerror属性被用来触发form的提交,即使图片加载失败,也会执行转账操作。攻击者只需要让用户点击一个链接或访问一个页面,就能触发这个恶意请求。
2CSRF攻击案例分析
2.1案例:社交媒体网站的CSRF攻击
假设一个社交媒体网站允许用户通过POST请求更改其电子邮件地址。攻击者可以创建一个恶意的链接,当用户点击时,会发送一个更改电子邮件地址的请求到该社交媒体网站,从而控制用户的账户。
POST/change_emailHTTP/1.1
Host:
Content-Type:application/x-www-form-urlencoded
new_email=attacker@
攻击者构造的恶意链接如下:
!--恶意链接--
ahref=/change_email?new_email=attacker@点击这里查看你的新消息/a
当用户点击这个链接时,浏览器会自动发送一个POST请求(实际中,可能需要使用form或JavaScript来构造POST请求),由于用户的登录状态被cookie保持,服务器会认为这个请求是合法的,从而更改了用户的电子邮件地址。
2.2防护措施:使用CSRF令牌
为了防止CSRF攻击,网站可以使用CSRF令牌。CSRF令牌是一个随机生成的字符串,它在用户登录时被创建,并存储在用户的session中。每当用户提交一个敏感操作的表单时,这个令牌必须被包含在请求中。服务器会验证请求中的令牌是否与session中存储的令牌匹配,如果不匹配,请求将被拒绝。
2.2.1代码示例:生成和验证CSRF令牌
importsecrets
fromflaskimportFlask,session,request
app=Flask(__name__)
app.secret_key=your_secret_key
@app.route(/login,methods=[POST])
deflogin():
#登录逻辑
session[csrf_token]=secrets.token_hex(16)
returnLoginsuccessful
@app.route(/change_email,methods=[POST])
defchange_email():
csrf_token=request.form.get(csrf_token)
ifcsrf_token!=session.get(csrf_token):
returnCSRFtokenmismatch,403
#更改电子邮件的逻辑
returnEmailchangedsuccessfully
在这个例子中,当用户登录时,一个随机生成的CSRF令牌被存储在session中。在/change_email路由中,服务器会检查请求中的CSRF令牌是
您可能关注的文档
- 前端开发工程师-版本控制与协作-GitHub-GitLab_Git基础概念与操作.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_安全性与权限控制.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_版本控制与分支管理.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_仓库创建与管理.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_创建与管理Issues.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_代码审查与MergeRequest.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_代码提交与合并.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_代码托管服务比较:GitHub与GitLab.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_解决代码冲突.docx
- 前端开发工程师-版本控制与协作-GitHub-GitLab_拉取与推送代码.docx
- 2024年江西省寻乌县九上数学开学复习检测模拟试题【含答案】.doc
- 2024年江西省省宜春市袁州区数学九上开学学业水平测试模拟试题【含答案】.doc
- 《GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语》.pdf
- 中国国家标准 GB/T 44275.2-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第2部分:术语.pdf
- GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- 《GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构》.pdf
- 中国国家标准 GB/T 44285.1-2024卡及身份识别安全设备 通过移动设备进行身份管理的构件 第1部分:移动电子身份系统的通用系统架构.pdf
- GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 中国国家标准 GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南.pdf
- 《GB/T 44275.11-2024工业自动化系统与集成 开放技术字典及其在主数据中的应用 第11部分:术语制定指南》.pdf
文档评论(0)