Web安全 - 跨站请求伪造攻击CSRF_java

跨站请求伪造攻击,简称CSRF(Cross-site request forgery),CSRF通过伪装来自受信任用户的请求实现攻击

CSRF的原理

CSRF主要是通过诱骗已经授权的用户执行攻击者想要的操作

例如 

(1)用户已经登录了网站的管理后台,处于登录有效期内

(2)攻击者制作了一个页面,里面有提交表单的操作,这个表单就是模拟管理后台添加管理员的操作

示例代码

Web安全 - 跨站请求伪造攻击CSRF_java_02


(3)攻击者把这个页面的链接和诱骗信息发送给用户,诱使用户点击链接,如果用户点击,攻击成功,攻击者就可以用新建的管理员登录系统进行任意操作了

上面的例子是攻击者添加管理员,实际可以做任何操作,只要攻击者对目标系统足够了解,他就可以模拟出他想要的操作,例如删除用户、删除文章、添加文章……

CSRF的防范措施

CSRF的防范主要有两种方式:验证码、token

(1)验证码

对后台的敏感操作页面添加验证码,执行此操作时,需要人工填写验证码,这样,模拟的表单就无法成功提交了,缺憾就是操作人员会稍麻烦些

(2)token

打开操作页面时,服务器端生成一个动态token值,在服务器端保留一份,在操作页面的表单中添加一个隐藏域,保存此token值,表单提交后,服务器程序获取token值和服务器保留的那份进行对比,值不同的话就不执行

token是服务器动态生成的,攻击者就有无法猜到,模拟的表单自然无法正常提交执行