Web安全在web开发中占有相当重要的地位,今天介绍下关于web安全方面的问题(CSRF,和注入攻击),以及rails是如何实现来防止这些攻击的。
首先介绍下什么是CSRF?中文名称:跨站请求伪造
- 简介:
跨站请求伪造的工作原理是,通过在页面中包含恶意代码或链接,访问已验证用户才能访问的 Web 应用。如果该 Web 应用的会话未超时,攻击者就能执行未经授权的操作。
原理:
大多数应用都使用基于 cookie 的会话。它们或者把会话 ID 储存在 cookie 中并在服务器端储存会话散列,或者把整个会话散列储存在客户端。不管是哪种情况,只要浏览器能够找到某个域名对应的 cookie,就会自动在发送请求时包含该 cookie。有争议的是,即便请求来源于另一个域名上的网站,浏览器在发送请求时也会包含客户端的 cookie。
举例:
我们在本地分别起两个服务(修改/etc/hosts 将两个域名指向本地,然后通过nginx反向代理),来演示1. www.mubiao.com 为我们要攻击的网站,2. www.hacker.com 为我们自己的网站。假设我们已经猜测出目标网站的某些可用的url,比如:
然后我们在自己的网站上做一些陷阱,在某个页面加入