Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

关于跨域POST攻击

  在JavaScript中到处都是安全性限制,最典型的就是跨域问题。但是即使它有如此严密的安全性限制,一些东西依然可以被攻击者利用。跨域限制主要是为了防止数据被盗取,但是如果不盗取数据而只是攻击呢?或者说,只需要跨域POST而不需要接收返回的数据呢?
  如果不需要接收返回数据,跨域POST请求完全是可以在JavaScript中构造出来。只需要生成一个FORM,设置一些提交的参数,JavaScript调用它的提交方法即可,FORM的提交是可以跨域的。如果不想在页面上显示出这个过程,可以嵌入隐藏的IFRAME中,同样可以发出跨域的POST请求。
  那么,跨域的POST请求有什么用呢?假如一个网站的留言板之类的程序只是一个简单的表单提交接口,我们就很容易通过这个接口来提交留言之类的吧?这个接口地址如果没有特殊的验证或服务器上的来路限制,任何网站上的表单都可以往上面提交东西。这时候如果自己在互联网上有个静态页面,里面包含了跨域POST到这个接口上的程序。那么,任何人点开这个静态页面的URL就都会自动往目标留言板上提交一条数据。并且,这个POST请求会包含对方自己的COOKIE。这就意味着,即使是一个需要登陆才能发布信息的留言板也可以攻击,只要客户端曾经登陆过,并且COOKIE有保留就行。
  要解决这个问题一般有两种方法,一种是在POST请求的参数中添加一些特殊的参数来验证。由于JavaScript无法跨域读取这些参数,所以就构造不出有效的POST请求。另一种方式是直接在服务器端对POST请求做一个来路验证,HTTP头中的REFERER字段如果不是同域的就拒绝提交。
网名:
54.162.169.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^