上次说到前端会对传来的code有state验证,只获取state正确的code,因为state正确才说明是微信传来的code,不是第三方传来的code。前端拿到code之后会把code给后台,后台去找微信要token。
那么在用户未登录的情况下这个后台接口是开发的,没有token保护,任何人都能访问。攻击者可以直接绕开前端,直接给后台发一个假的code,让后台去访问微信。这样造成了后台资源的浪费甚至服务器瘫痪,或者让攻击者蒙到了一个token造成信息泄露。
那么后台在未登录的情况下是无法判断调用者是我们的前端还是攻击者,后台能采取的措施有哪些呢?
方案一:封IP,同一个IP试了100次都不对,那就不是正常请求,直接封IP不然访问
方案二:前端使用动态密匙加密,如果使用普通密匙的话没用,因为普通密匙会在前端保存起来,攻击者很容易获取到密匙,然后自己加密,这样后台一样可以校验通过