• Home
  • Articles
    • 日志
    • 妍小言
    • 舒小书
    • 浩然说
    • 生活日记
  • All Tags

简析12306安全模式

08 Aug 2017

Reading time ~1 minute

防御对象

  • 跳过前置流程,直接执行后置步骤的请求。
  • 核心接口CSRF防御。

防御方案

cookie

12306利用 tk 这个cookie,来管理当前会话所处的上下文状态,即当前会话所处流程节点。

  • 登录节点 用户登录接口https://kyfw.12306.cn/otn/uamauthclient成功后,会写入 tk cookie,该次写入的cookie指示会话登录之后到下单之前的上下文信息。

  • 下单节点 用户下单接口https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest成功后,同样会写入 tk cookie,该cookie标示当前会话已进入并且处于下单流程,任何不带该正确标示或者不处于下单流程均会由后端反馈异常。

  • 确认订单 用户确认订单接口https://kyfw.12306.cn/otn/confirmPassenger/checkOrderInfo 以及 https://kyfw.12306.cn/otn/confirmPassenger/getQueueCount, 成功会写入cookie,标志进入确认订单流程,不正确的标示或者不正确的流程均会导致后端 tk cookie校验失败报错。

  • 12306同样在部分场景可能对tk做扩展其作用域操作,至于何时扩展其作用域,何时重新写入新作用域的cookie,我暂时还并未发现判断依据。

REPEAT_SUBMIT_TOKEN

12306服务端在渲染页面时会将后端生成的一个token,所有的订单提交请求均需将该token一并提交到后端进行验证。

我认为该token更像是一种对csrf攻击的防御,即防止其他用户伪造链接,骗取用户点击,达到盗取cookie,伪造请求的目的。

该token并非像该变量名所标示的那样,拥有防止重复提交的目的。



safe