问题描述
在设置了standardizedQueries:true的属性之后,存放在 Oracle SDE 中的数据发布成的REST服务,仍然可以通过在 Where 语句中传入参数 USER like 'SD%' 执行查询,从而可以在有限的次数内暴力试探出 SDE 连接的用户名。其中 USER 不是数据表中包含的字段,是 Oracle 提供的 SQL 函数。SD% 是 SDE 连接用户名的部分字母。
服务查询
设置标准化查询standardizedQueries属性
测试用例
| 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或以上版本。










网友评论