博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跨站伪造请求CSRF(Cross-site request forgery)
阅读量:3756 次
发布时间:2019-05-22

本文共 739 字,大约阅读时间需要 2 分钟。

CSRF是说攻击者可以利用别人的权限去执行网站上的操作,例如删除资料。例如,攻击者张贴了以下脚本到网页上:

攻击者自己当然是没有权限可以执行”/posts/delete_all”这一页,但是网站管理员有。当网站管理员看到这一页时,浏览器就触发了这个不预期的动作而把资料删除。

要防范CSRF,首先可以从区别GET和POST的HTTP请求开始。我们在路由一章提过:所有读取、查询性质操作,都应该用GET,而会修改或删除到资料的,则要用POST、PATCH/PUT或DELETE。这样的设计,就可以防止上面的恶意程式码了,因为在浏览器中必须用表单form才能送出POST请求。
不过,这样还不够。因为即使是POST,浏览器还是可能不经过你同意而自动发送出去,例如:

To the harmless survey

所幸,Rails内建了CSRF防御功能,也就是所有的POST请求,都必须加上一个安全验证码。在app/controllers/application_controller.rb你会看到以下程式启用这个功能:

class ApplicationController < ActionController::Base  protect_from_forgery with: :exceptionend

这个功能会在所有的表单中自动插入安全验证码:

如果POST请求没有带正确的验证码,Rails就会丢出一个ActionController:InvalidAuthenticityToken的错误。

Layout中也有一段<%= csrf_meta_tags %>是给JavaScript读取验证码用的。

转载地址:http://srasn.baihongyu.com/

你可能感兴趣的文章
数据结构基础(一)
查看>>
Linux反弹shell姿势总结
查看>>
CVE-2018-2894 WebLogic远程上传漏洞复现
查看>>
Nginx解析漏洞复现
查看>>
GhostScript沙箱绕过(命令执行漏洞)CVE-2018-16509
查看>>
通过图片获取地理位置
查看>>
Python技巧100题(六)
查看>>
PHP提权姿势
查看>>
Linux VI VIM编辑器
查看>>
Linux 进程管理
查看>>
Linux 磁盘管理
查看>>
Vulmap的使用
查看>>
SPSS Modeler工具笔记
查看>>
逻辑题分享
查看>>
后端开发中常用的语言
查看>>
数学考试(牛客)
查看>>
Codeforces Round #697 (Div. 3)
查看>>
Codeforces Round #705 (Div. 2)
查看>>
2021-04-11
查看>>
数的分解
查看>>