锻造POST请求可以通过不信任的网站,通过创建一个表格,并发布到目标站点来构建。 然而,这个帖子的原始内容将被浏览器编码为格式如下:
param1=value1¶m2=value2
是否有可能为不可信的网站 ,构建包含任意原始内容伪造出帖子-如字符串化JSON?
{param1: value1, param2: value2}
换句话说: 网站可以使浏览器POST 任意内容到第三方域?
锻造POST请求可以通过不信任的网站,通过创建一个表格,并发布到目标站点来构建。 然而,这个帖子的原始内容将被浏览器编码为格式如下:
param1=value1¶m2=value2
是否有可能为不可信的网站 ,构建包含任意原始内容伪造出帖子-如字符串化JSON?
{param1: value1, param2: value2}
换句话说: 网站可以使浏览器POST 任意内容到第三方域?
HTML表格的请求的POST体始终为应用/ X WWW的窗体-urlencoded , 多部分/格式数据 ,或文本/无格式 ,因为这些反映了有效的值enctype
属性 。 特别是text/plain
可以被用于形成有效的JSON数据 。 因此,基于表单的CSRF这里可以使用,但是,它需要服务器来接受它作为text/plain
。
此外,基于XHR-CSRF可以用作所述的XMLHttpRequest API允许所以发送任意POST数据 。 这个仅存的障碍是同源策略:只有当两者具有相同的起源或您的服务器支持跨来源请求共享 ,并允许资源共享,这样有效的POST请求是可以伪造的。
是的!POST请求无非是文字更具有发送到Web服务器的特定格式。 您可以使用IE或Chrome开发者工具来看看每个请求的样子。
所以,是的,你可以创造任何你想要伪造的POST请求及改变,但是如果该请求是没有很好地形成大多数Web服务器会拒绝它。
http://tools.ietf.org/html/rfc2616
一个网站的客户端代码将有困难,开拓这样的请求,但是服务器端代码可以很容易地做到这一点。
至于如果请求来自浏览器或行为就像一个浏览器的服务器你的网站看不出来,在浏览器的限制是没有任何保护。
您可以通过常规的形式后创建有效的JSON。 这只是创造性地命名的形式参数的问题。 特别是,参数名称可以包含引号。
http://blog.opensecurityresearch.com/2012/02/json-csrf-with-parameter-padding.html
在纯HTML形式的情况下,是的,它总是会根据编码规范 。 但也有其他的编码方案 ,如MIME多。 也有Javascript和问题的XMLHttpRequest 。 编码仅在一个情况下,具体地提及。 这强烈暗示,有没有在其他情况下适用的编码。