在WebGIS的项目开发过程中,前端项目的安全隐患也经常出现在GIS系统中,如常见的WEB安全问题,如XSS、XSRF、SQL注入等时刻都影响GIS系统安全,要保证GIS系统的安全,从某种程度上就必须要保证GIS服务的安全,本文主要介绍基于Arc GIS Server 作为地图服务时,如何使用Arc GIS Server 规避Web GIS 系统安全风险。开启安全选项后,即使客户端传入非法参数,ArcGIS Server 进行相应的处理以保证地图服务安全。

一、扫描跨站点脚本攻击

跨站点脚本 (XSS) 攻击会在现有网页中加入并运行代码。攻击者通常诱骗受害者打开包含攻击者提供的数据或输入的该页面。在 ArcGIS Server 站点中,该输入或数据可以是由要素服务返回的要素。

ArcGIS Server 可以扫描要素中是否存在潜在的 XSS 攻击。当通过要素服务添加或更新要素时以及当将要素发送到客户端应用程序时,它可以对这些要素进行扫描。但是,扫描要素中是否存在恶意代码时,可能导致误报或禁用要素中包含的 HTML 弹出窗口的合法 HTML。可以按服务对扫描行为进行配置。

默认情况下,在服务创建后,通常将它们配置为扫描编辑中是否存在潜在的脚本并阻止它们,但不会扫描已从要素服务中检索的要素。攻击者可通过将要素编辑成跳过扫描来绕过这种编辑扫描,例如通过 SQL 直接编辑数据库。最安全的做法是将服务配置为扫描所有要素。扫描检索到的每个要素中是否存在脚本可能会降低性能,但建议采用这种安全做法。

逐个服务更改值可能加大管理难度,因此,首选方法是使用 featureServiceXSSFilter 属性定义一个默认值。此系统属性在创建服务时使用。它对现有服务没有影响,可以在服务创建后对其进行覆盖。

要设置此系统属性,请登录到 ArcGIS Server Administrator Directory 然后单击系统 > 属性。属性由 JSON 对象表示。复制现有 JSON 对象,然后通过向该现有 JSON 对象添加 featureServiceXSSFilter 属性对其进行修改。

featureServiceXSSFilter 属性可以设置为 input 或 inputOutput。input 值为默认值;用于指示 ArcGIS Server 将新要素服务配置为扫描编辑。inputOutput 值指示 ArcGIS Server 将新要素服务配置为扫描编辑和返回的要素。

要覆盖特定的服务设置,必须使用 ArcGIS Server Administrator Directory,找到该特定服务,然后进行编辑。在单个要素服务上使用的三个属性如下:

· xssPreventionEnabled 可用于扫描要素中是否存在脚本和代码。将其设置为 true。

· xssPreventionRule 可以设置为 input 或 inputOutput。始终会扫描编辑,但仅当值为 inputOutput 时才会扫描传出要素中是否存在脚本。这将覆盖整个系统的 featureServiceXSSFilter 属性。

· xssInputRule将指定检测到代码时的响应。选项为 rejectInvalid 或 sanitizeInvalid。rejectInvalid 值是默认行为,建议使用。

首先登录ArcGIS Server 管理员页面,例如: http://ip:port/arcgis/admin

设置防XSS措施: http://ip:port/arcgis/admin/system/properties/update

二、 限制文件权限

设置文件权限,以便仅授予对 ArcGIS Server 安装目录、配置存储和服务器目录的必须访问权限。访问 ArcGIS Server 软件需要具备的唯一帐户是 ArcGIS Server 帐户。此帐户用于运行软件。您的组织可能需要为更多帐户授予访问权限。请记住,ArcGIS Server 帐户必须具有对安装目录、配置存储和服务器目录的完全访问权限,站点才能正常工作。

ArcGIS Server 会从安装位置的父文件夹中继承文件权限。此外,ArcGIS Server 还会为 ArcGIS Server 帐户授予权限,使其能够访问安装目录。在 ArcGIS Server 运行过程中创建的文件(如日志)会从父文件夹中继承各自的权限。要保护配置存储和服务器目录,请设置限制访问父文件夹。

对配置存储具有写入权限的任何帐户都可更改 ArcGIS Server 设置,而这些设置通常只可由系统管理员进行修改。如果使用内置安全存储来维护用户,则配置存储包含这些用户的加密密码。在此情况下,还应限制对配置存储的读取权限。

如果使用受保护的地图或地理处理服务,请锁定服务器目录的文件权限,以确保未授权帐户无法获取对这些地图和地理处理作业输出的访问权限。

三、禁用主站点管理员帐户

主站点管理员帐户是在 ArcGIS Server Manager 中创建站点时指定的帐户。仅 ArcGIS Server 可识别其名称和密码;该帐户不是操作系统帐户,且与您的标识存储中的用户帐户分开管理。禁用主站点管理员帐户以确保除了通过在标识存储中指定的组或角色之外,无法采用其他方式管理 ArcGIS Server。有关完整说明,请参阅禁用主站点管理员帐户。

四、 安全传输 ArcGIS 令牌

为了防止拦截和错误使用令牌,请使用采用 HTTPS 的安全连接。使用 HTTPS 可确保恶意用户无法拦截客户端发送的用户名和密码以及 ArcGIS Server 返回的令牌。有关详细信息,请参阅确保 ArcGIS Server 通信的安全性。

在构建使用 GET 请求访问 Web 服务(这些服务受基于 ArcGIS 令牌的身份验证保护)的自定义 ArcGIS 客户端应用程序时,请使用 X-Esri-Authorization 令牌头而非查询参数来发送令牌。这可以防止网络中介(如代理、网关或负载均衡器)获取令牌。以下是 HTTP GET 请求以 X-Esri-Authorization 令牌头发送令牌的示例:

GET https://arcgis.mydomain.com/arcgis/rest/services/SampleWorldCities/MapServer?f=pjson HTTP/1.1

Host: arcgis.mydomain.com

X-Esri-Authorization: Bearer xMTuPSYpAbj85TVfbZcVU7td8bMBlDKuSVkM3FAx7zO1MYD0zDam1VR3Cm-ZbFo-

如果 ArcGIS Server 使用 ArcGIS Server 身份验证而非 Web 层身份验证(IWA、HTTP BASIC、PKI 等),,则可以使用标准 HTTP 授权令牌头代替 X-Esri-Authorization 令牌头:

GET https://arcgis.mydomain.com/arcgis/rest/services/SampleWorldCities/MapServer?f=pjson HTTP/1.1    Host: arcgis.mydomain.com

Authorization: Bearer xMTuPSYpAbj85TVfbZcVU7td8bMBlDKuSVkM3FAx7zO1MYD0zDam1VR3Cm-ZbFo-

五、使用标准化查询

ArcGIS Server 中含有一个安全选项(即标准化查询),能够提供更好的保护以防止 SQL 注入攻击。默认情况下,会启用该选项。如果您是服务器管理员,建议将这个安全选项保留为启用状态,然后指导应用程序开发人员构建使用独立于数据库的语法的 WHERE 子语句,操作方法如下所示:

首先登录ArcGIS Server 管理员页面,例如: http://ip:port/arcgis/admin

设置防XSS措施: http://ip:port/arcgis/admin/system/properties/update

六、禁止服务目录

可通过禁用服务目录来减少从 Web 搜索中找到、浏览或者通过 HTML 表单查询到您的服务的可能性。禁用服务目录还可以加强对 XSS 攻击的防护。

是否禁用服务目录取决于站点的用途以及用户和开发人员依靠它来进行导航的程度。禁用服务目录后,您可能需要准备可用于站点的服务的其他列表或元数据。

首先登录ArcGIS Server 管理员页面,例如: http://ip:port/arcgis/admin

禁用服务目录:

http://10.100.3.118:6080/arcgis/admin/system/handlers/rest/servicesdirectory/edit

七、限制跨域请求

跨域请求用于许多系统攻击中。建议将 ArcGIS Server 服务限制为仅用于您所信任的域中托管的应用程序。有关详细信息,请参阅限制对 ArcGIS Server 的跨域请求。

首先登录ArcGIS Server 管理员页面,例如: http://ip:port/arcgis/admin

设置允许访问服务的主机地址:

http://ip:port/arcgis/admin/system/handlers/rest/servicesdirectory/edit

更多精彩内容请关注公众号“工作小事”,一个专注于分享GIS应用技术,包括但不限于ArcGIS,SuperMap,GeoServer等GIS平台软件的使用技术,并结合对应的GIS平台,分享WebGIS相关的开发技术及及应用案例。

管理员需要对此项目进行安全扫描_当ArcGIS Server与Web安全擦出火花??相关推荐

  1. predicate 列存储索引扫描_在SQL SERVER中导致索引查找变成索引扫描的问题分析

    SQL Server 中什么情况会导致其执行计划从索引查找(Index Seek)变成索引扫描(Index Scan)呢? 下面从几个方面结合上下文具体场景做了下测试.总结.归纳. 1:隐式转换会导致 ...

  2. java商城_基于Java,jfinal web框架开发出微信商城,微信分销商城源码分享

    项目简介: 专门针对微信服务号开发的一套微信商城,微信分销商城,支持商品多规格,支持按地区设置邮费,支持限时打折,订单返现,满减送,满包邮,支持订单打印,订单打印模板自定义,发货单打印,发货单打印模板 ...

  3. SVN-项目 XXX 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何修改...

    错误描述:  项目 XXX 受源代码管理.向源代码管理注册此项目时出错.建议不要对此项目进行任何修改 解决办法: 使用记事本打开,项目csproj文件删除图中几行,重新打开解决方案就可以了 原因分析: ...

  4. 轻触开源(三)-Gson项目源码解析_贰

    2019独角兽企业重金招聘Python工程师标准>>> 转载请注明出处:https://my.oschina.net/u/874727/blog/750473 Q:102525062 ...

  5. 嵌入式设计与开发项目-ADC键盘扫描程序设计

    嵌入式设计与开发项目-ADC键盘扫描程序设计 一.实现的功能 二.根据功能实现代码 1.主文件main.c 2.ADC按键程序的头文件"adc.h" 3.ADC按键程序的源文件&q ...

  6. 城市级智能网联招投标项目情况全扫描(2022版)

    城市级智能网联范畴主要包括①全国各个城市智能网联招投标项目情况,②全国各个城市封闭测试场情况,③全国各个城市智能网联汽车测试管理规范或实施细则情况,④全国各个城市智能网联测试示范区情况.本篇推出城市级 ...

  7. python工程师简历项目经验怎么写_简历上的项目经历怎么写 ?这 3 条原则不可忽视 !...

    阅读本文大概需要 5 分钟. 作者:黄小斜 作为一个程序员,想必大家曾经都做过一些项目,可能现在手头上也还有一些项目. 不过还是有很多学生朋友来问我"没有项目怎么办",诚然,确实有 ...

  8. python 前端框架比较_浅谈五大Python Web框架

    说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见: 虽然另一大脚本语 ...

  9. apache-cxf 使用_使用Apache CXF进行Web服务学习

    apache-cxf 使用 在我的最后几个项目中,我使用了Web服务,在某些地方创建它们并在其他地方使用它们. 我认为标准任务(例如创建客户端,创建Web服务等)非常简单,如果遇到问题,有足够的资源. ...

最新文章

  1. 自律到极致-人生才精致「第6期」:领奖通知
  2. git如何忽略已经提交的文件 (.gitignore文件无效)
  3. 【FFmpeg】ffplay 播放视频命令 ( 播放 | 暂停 | 停止 | 音量控制 | 进度控制 | 音频流 / 视频流 / 字幕流 / 节目切换 )
  4. Hadoop集群搭建(27)
  5. NGUI减少Drawcall
  6. 【转】矩阵十大经典题目
  7. 职工考勤管理信息系统数据库课设_职工考勤管理信息系统数据库课程设计
  8. tomcat设置http自动跳转为https访问
  9. 安卓学习笔记33:实现逐帧动画
  10. unity3 学习localPosition, Position区别,itween插件,计算距离
  11. 谈谈Spring IOC是怎么实现解耦的
  12. Python | 范德蒙矩阵
  13. 微信小程序实现退款,Java版。
  14. 阿里的 《逆流而上》电子版
  15. 电信计费系列2-手机+座机计费
  16. SQL Developer连接时报错:ORA-12528
  17. Latex 偏导符号 ∂
  18. 最通俗易懂的python与mysql数据库交互
  19. 解决导入网关gateway依赖爆红
  20. intel clear linux 教程,英特尔ClearLinux安装教程

热门文章

  1. 【算法】平衡二叉树 Avl 树
  2. 95-910-148-源码-FlinkSQL-Flink SQL自定义聚合函数
  3. 【clickhouse】flink clickhouse sink Class.forName 卡死
  4. 【java】java 理解JDK中UUID的底层实现
  5. 【Flink】Flink ClosureCleaner 闭包清除
  6. python redis 集群_python与java中使用redis集群
  7. 从头捋一遍Java项目中的五大设计原则,就不信你学不会!
  8. SpringBoot应用监控——Actuator安全隐患及解决方案
  9. 关于JVM内存的N个问题
  10. String被设计成不可变和不能被继承的原因