Happy coder 2020-09-28 14:12 采纳率: 50%
浏览 101

CSRF下JSON攻击如何实现

1. 问题提出

看spring security官方文档中,有一段关于利用JSON进行CSRF攻击的描述:

一个常见的问题是“我需要保护由javascript发出的JSON请求吗?”答案是,这视情况而定。但是,您必须非常小心,因为有些CSRF漏洞会影响JSON请求。例如,恶意用户可以使用以下格式使用JSON创建CSRF:

<form action="https://bank.example.com/transfer" method="post" enctype="text/plain">
    <input name='{"amount":100,"routingNumber":"evilsRoutingNumber","account":"evilsAccountNumber", "ignore_me":"' value='test"}' type='hidden'>
    <input type="submit"
        value="Win Money!"/>
</form>

这将产生以下JSON结构

{ "amount": 100,
"routingNumber": "evilsRoutingNumber",
"account": "evilsAccountNumber",
"ignore_me": "=test"
}

如果应用程序未验证Content-Type,则该应用程序将被暴露。根据设置的不同,仍然可以通过更新URL后缀以.json结尾来利用验证内容类型的Spring MVC应用程序,如下所示:

<form action="https://bank.example.com/transfer.json" method="post" enctype="text/plain">
    <input name='{"amount":100,"routingNumber":"evilsRoutingNumber","account":"evilsAccountNumber", "ignore_me":"' value='test"}' type='hidden'>
    <input type="submit"
        value="Win Money!"/>
</form>

2. 具体问题

针对上述官方的描述,有两个问题想请教各位老师:

2.1 产生了如上述的JSON结构会造成什么问题?

这会有什么影响么?如果造成了原本想直接传递给后台的表单数据,变成了传递json,后台在接收参数、做参数解析的时候就会报错。为什么会涉及CSRF问题?

2.2 增加了Content-Type的JSON校验会有那些好处?

意思是原本只处理json数据的接口,增加校验后,将会拒绝处理其他数据类型么?但是如果接口传递的数据不是json类型的,在参数解析的时候也会报错啊?增加这个校验的必要性是?

  • 写回答

1条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题