JDK1.8+Resin环境下RESTful接口成员变量安全性咨询
Subpath1Resource成员变量的安全风险分析
先看核心的实例创建逻辑:ExampleResource的getSubpath1Resource()方法每次调用都会新建一个Subpath1Resource实例返回,也就是说每个HTTP请求都会对应一个独立的Subpath1Resource对象,类里的dataHead、p_no、p_name这些成员变量都是每个实例独有的,不会在多个请求之间共享。
基于这个前提,这些成员变量本身不存在安全风险,具体分析如下:
- 无多线程并发安全问题:因为每个请求都是独立的实例,多个请求的线程操作的是各自的成员变量,不会出现多个线程同时修改同一变量导致的数据混乱、脏读等并发问题。
- 无跨请求数据泄露风险:
createOrder方法每次都会重新初始化dataHead为新的HashMap,p_no、p_name也会被当前请求的参数覆盖,不会残留上一次请求的数据,不存在数据泄露给其他请求的情况。
不过要注意,代码里存在输入未校验的问题:createOrder直接对param做split("/"),如果传入的参数格式不符合预期(比如没有/分隔符,或者分隔后数组长度不足2),会抛出ArrayIndexOutOfBoundsException,导致请求报错,但这不属于成员变量本身的安全风险,属于输入合法性校验的缺失。
内容的提问来源于stack exchange,提问作者Air Wei
相关产品推荐
相关产品推荐

