rpc权限的校验
先从攻击角度看
很多时候的cgi我们需要传入id来获取详情,这个id其实是可以遍历请求的,那么这个id有没有可能获取到其他企业的信息呢?是有可能的
防御角度看
由于大部分rpc接口并不会承担权限校验的职责,这个也是正常的,因为node作为接入层确实是需要接管权限的校验。
有些接口可能会漏掉权限校验,比如当后台返回了id,而前端通过id去查询详情信息的时候,这个时候必要限制只能获取能获取的id的信息
这个策略要不在rpc接口解决,要不在node解决,如果在node解决,可能需要后台提供专门的权限校验接口,来获取这种范围关系。
(此处可想象一个拓扑图)
构造xss请求
先从攻击角度看
好吧也许你确实在前端有去转义字符,但是我照样可以通过花样的构造前端请求来使得注入我的代码
<x onpointerrawupdate=alert('xss')>testxss!
这样一段代码直接输入<textarea>
并提交,被转义后是安全的,并放到请求体里面是这样的
data%5B0%5D%5Bcontent_type%5D=1&data%5B0%5D%5Brich_message%5D%5Bmessages%5D%5B0%5D%5Bdata%5D=%26lt%3Bx+onpointerrawupdate%3Dalert('xss')%26gt%3Btestxss!&data%5B0%5D%5Brich_message%5D%5Bmessages%5D%5B0%5D%5Bcontent_type%5D=0&dataid=22&action=edit&_d2st=a4800994
但是前端的转义并不可靠,我们依然可以通过各种工具去修改这里的参数,改为未转义的
这个时候传到node层,并且通过后台接口存入了存储,在前端拿出来渲染展示的时候,就会变成如下效果
从防御角度来看
必须要在node层对前端传入的字符串进行过滤或者转义
尝试过转义的做法,这样虽然在前端可以显示正常,但是在客户端就会显示成转义后的字符
目前采用的是过滤,就是把标签和标签里的属性全都过滤掉,最后留下的字符串只有testxss
这一行
当然,在前端也是需要这样去过滤一次的。