问题描述
在设置了standardizedQueries:true
的属性之后,存放在 Oracle SDE 中的数据发布成的REST服务,仍然可以通过在 Where
语句中传入参数 USER like 'SD%'
执行查询,从而可以在有限的次数内暴力试探出 SDE 连接的用户名。其中 USER 不是数据表中包含的字段,是 Oracle 提供的 SQL 函数。SD%
是 SDE 连接用户名的部分字母。
测试用例
GUID | ArcGIS Server | Oracle | SDE | standardizedQueries | Result |
---|---|---|---|---|---|
1 | 10.7 | 12c | 10.6 | TRUE | 正常屏蔽 |
2 | 10.7 | 12c | 10.6 | FALSE | 成功执行 |
3 | 10.7 | 11g | 10.6 | TRUE | 正常屏蔽 |
4 | 10.7 | 11g | 10.6 | FALSE | 成功执行 |
5 | 10.6.1 | 11g | 10.5 | TRUE | 正常屏蔽 |
6 | 10.6.1 | 11g | 10.5 | FALSE | 成功执行 |
7 | 10.6 | 12c | 10.6 | TRUE | 成功执行 |
8 | 10.6 | 12c | 10.6 | FALSE | 成功执行 |
9 | 10.6 | 11g | 10.6 | TRUE | 成功执行 |
10 | 10.6 | 11g | 10.6 | FALSE | 成功执行 |
11 | 10.5.1 | 11g | 10.5 | TRUE | 成功执行 |
12 | 10.5.1 | 11g | 10.5 | FALSE | 成功执行 |
13 | 10.5 | 11g | 10.5 | TRUE | 成功执行 |
14 | 10.5 | 11g | 10.5 | FALSE | 成功执行 |
结论
通过对比分析,排除 Oracle 和 SDE 版本的影响,得出结论:
- ArcGIS Server 10.6 及以前版本,无论 standardizedQueries 参数如何设置,都可以将 USER 作为 where 条件语句执行查询。
- ArcGIS Server 10.6.1 和 10.7,强制执行标准化查询,在 standardizedQueries 参数设置为
TRUE
时,将 USER 认定为无效。
Unable to complete operation.
An invalid where clause or definition expression has been requested: "user like 'SD%'"
- 在ArcGIS Server 10.5.1的环境下,测试过安全补丁
ArcGIS-1051-S-SEC2018U2-Patch.msp
,问题依旧。 - 目前方案:建议将 ArcGIS Server 升级到10.6.1或以上版本。
网友评论