8. 应用安全
InterSystems数据平台上可能运行着多种应用,例如Web网页应用、SOAP服务、REST API、HL7 接口、SQL服务等等。这些应用种类繁多,面临的安全风险也是巨大的,例如代码注入攻击和HTTP的跨站请求伪造攻击等。
这其中代码注入攻击和针对Web应用的攻击尤其需要重视。
8.1 代码注入攻击
代码注入攻击通常和我们编写的程序相关,需要在程序编写时注意避免。
8.1.1 SQL注入攻击
SQL注入攻击是典型的代码注入攻击,通过从外部注入恶意SQL语句获得数据权限并获得敏感数据。关系型访问方式都是通过客户端SQL语句传入执行的,因此它是数据库重点需要防范的。
InterSystems数据平台并不支持以分号分割的多条SQL语句作为一个SQL命令执行,因此它本身免疫了主要的SQL注入攻击手段。
InterSystems数据平台支持动态SQL,即允许SQL命令作为方法的字符串参数传入,这会给SQL注入攻击留有隐患。在编程时,应避免开放服务用于接受完整的SQL语句作为参数,而是通过SQL动态传参来构建运行时SQL。
InterSystems数据平台支持行级安全,这有助于避免在SQL注入攻击时,将所有数据返回给攻击请求。
8.1.2 $ZF
InterSystems数据平台提供了系统函数$ZF,用以调用外部命令。其中$ZF(-1)和$ZF(-2)用以调用服务器操作系统的命令。这可能会成为代码攻击的隐患。
在使用$ZF开发服务时,应避免把完整的操作系统命令作为字符串参数传入来执行,而应仅传入必要的数据,由服务器端方法来组成需要执行的操作系统命令,避免注入攻击。
8.2 Web应用安全管理
InterSystems数据平台提供多种Web应用,都是基于HTTP/HTTPS协议的,例如InterSystems数据平台的管理门户网页、用户自定义的网页、开放的SOAP服务、RESTful API。
既然走HTTP/HTTPS,所以首先应该部署专用Web服务器,并配置HTTPS来提供这些Web服务,在传输通道上保障安全。
除了传输通道,要得到更安全的生产环境,还有其它的安全设置需要检查和配置。
8.2.1 CSP/ZEN用户自定义网页应用
每个InterSystems数据平台等命名空间默认都有一个Web应用,可以通过它提供用户自定义网页应用。也可以创建一个新的Web应用提供用户自定义的网页应用。
第一个要检查的项目,是要看看这些默认创建的Web应用是否需要。如果不需要,应该禁用 – 取消选中“Enable Application”。
第二个要检查的项目,是这个Web应用使用的身份认证方式。在生产环境上,不应该使用“未验证”方式,所以应该取消选中该选项。
第三个要设置合适的“必要的资源”,它是对网页应用的资源权限要求。必须具有该资源的使用权限的用户,才能访问该网页应用。
第四个要决定是否开启防CSRF攻击,建议开启“Prevent Login CSRF attack