精华内容
下载资源
问答
  • 本文这份清单将介绍 72 实操要点,让你方位保护你的 Web 应用程序。各位看官,准备入坑啦! 一、浏览器端的威胁防御 1、用且仅用 HTTPS,防范网络攻击 众所周知,一个安全的应用需要对浏览器和 Web 服务器之间...

    原文地址:Web Application Security Checklist

    原文作者:Teo Selenius(已授权)

    译者 & 校正:HelloGitHub-小熊熊 & 卤蛋

    对于开发者而言,网络安全的重要性不言而喻。任何一处代码错误、一个依赖项漏洞或是数据库的端口暴露到公网,都会有可能直接送你上热搜。

    那么,哪里可以找到详细的避雷指引呢?OWASP's top 10 清单太短了,而且它更关注的是漏洞罗列,而非对预防。相比之下,ASVS 是个很好的列表,但还是满足不了实际需求。

    本文这份清单将介绍 72 个实操要点,让你全方位保护你的 Web 应用程序。各位看官,准备入坑啦!

    一、浏览器端的威胁防御

    1、用且仅用 HTTPS,防范网络攻击

    众所周知,一个安全的应用需要对浏览器和 Web 服务器之间的所有连接进行加密。此外,建议禁用一些旧的密码套件和协议。使用 HTTPS 时,仅加密网站的“敏感”部分是不够的。如非这样,攻击者可以截获某个未加密的 HTTP 请求,然后伪造来自服务器的响应,返回恶意内容。幸运的是,HTTPS 目前是很容易做到的。我们可以通过 Let's Encrypt 免费获得证书,加上 CertBot 免费续期。

    继续我们的清单,下一个是 HSTS 它与 HTTPS 密切相关。

    2、使用 HSTS 和预加载来保护用户免受 SSL 剥离攻击

    服务器可以用 HSTS 或 Strict Transport Security header 来强制进行加密连接。它表示需要一直使用 HTTPS 连接访问网站。

    HSTS 可以防止 SSL 剥离攻击。所谓的 SSL 剥离攻击也就是:网络上的攻击者截获浏览器发出的第一个 HTTP 请求(通常是未加密的),并立即伪造对该请求的回复,假装是服务器并将连接降级为明文 HTTP。

    值得注意的是,HSTS 仅在用户至少成功访问了一次应用程序的情况下才能生效。为了克服这个限制,可以把我们的网站提交到 https://hstspreload.org ,这样,各浏览器便可以将我们的域名通过硬编码写入到 HSTS 列表中。

    如下:

    Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
    

    警告:

    在实施 HSTS 时,将会强制进出该网站的所有网络请求均被加密,如果网站请求中仍然有纯文本,可能无法访问。所以,先设置一个小的 max-age 参数进行调试,如果一切正常工作,再加大这个值。调试成功后再加上预加载 (preload) ,把开启预加载保留在最后一步,因为关闭它是件很麻烦和痛苦的事情。

    3、设置安全 Cookie,保护用户免受网络攻击

    给 Cookie 加上 Secure 属性。此属性将防止 Cookie 在(意外或强制的)未加密的连接中泄漏。

    Set-Cookie: foo=bar; ...other options... Secure
    

    4、安全生成 HTML 以避免 XSS 漏洞

    要避免 XSS(跨站点脚本)漏洞,可以采用下面两种方法:

    1. 完全静态的网站(例如 JavaScript SPA + 后端API)。避免生成 HTML 问题的最有效方法是根本不生成HTML,如前述方法,当然,也可以试试很酷的 NexJS。

    2. 模板引擎。针对传统的 Web 应用程序,其中的 HTML 大多是在后端服务器上根据提供参数动态生成的。这种情况下,不要通过字符串连接来创建 HTML 。推荐的做法是使用模板引擎,比如 PHP 语言的 Twig、Java 语言的 Thymeleaf、Python 语言的 Jinja2 等等。

    此外,务必要正确配置模板引擎,从而可以自动对参数进行编码,并且不要使用任何可以绕过这种编码的“不安全”函数。不要把 HTML 放在回调函数、属性(不带引号)或 href/src 等诸如此类的地方。

    5、安全使用 JavaScript 以避免 XSS 漏洞

    要避免 JavaScript 端的 XSS(跨站点脚本)漏洞,切忌将不受信任的数据传递到可执行代码的函数或属性中。这类常见的函数或属性包括:

    • eval、setTimeout、setInterval 等。

    • innerHTML,React's dangerouslySetInnerHTML 等。

    • onClick、onMouseEnter、onError 等。

    • href、src 等。

    • location, location.href 等。

    6、沙箱处理不可信内容,避免 XSS 漏洞

    最好是能避免不可信的内容,但往往又不能完全避免:例如需要从远程获取 HTML 进行展示,或者需要允许用户用所见即所得的编辑器写文章,等等。

    要避免这些场景中的 XSS(跨站点脚本)漏洞,请首先使用 DOMPurify 清理内容,然后在沙箱中进行内容呈现。

    即使所见即所得的编辑库声称从 HTML 中移除了恶意内容,仍然可以通过重新净化和沙箱来处理,进一步确保安全。

    还有一种常见的情况是,我们想在网页展示广告等内容。这种情况下简单采用 IFrame 是不够的,因为 same-origin 策略会允许跨域的 frame 将父级 frame (也就是我们的网站)的 URL 修改为一个钓鱼网站。因此,要记住使用 IFrame 的沙箱属性来避免此种情况的发生。

    7、采用内容安全策略,避免 XSS 漏洞

    内容安全策略(CSP)可以很好地防御 XSS(跨站点脚本)攻击、点击劫持攻击等。所以,一定要用它!默认情况下,CSP 会阻止几乎所有的危险操作,所以额外的配置越少越好。如下:

    Content-Security-Policy: default-src 'self'; form-action 'self'; object-src 'none'
    

    它允许从 Web 应用程序的源代码加载脚本、样式、图像、字体等,但不允许加载其他内容。最值得注意的是,它将阻止内联脚本()的运行,从而更好地预防 XSS 漏洞。

    此外,form-action:'self' 指令可防止在网站上创建恶意 HTML 表单(比如“您的会话已过期,请在此处输入密码”类似的表单),并将其提交到攻击者的服务器。

    无论如何,都不要指定 script-src: unsafe inline ,一旦这样做,CSP 将形同虚设。

    最后,如果你担心 CSP 会影响生产环境,可以先以 Report-Only 模式进行部署:

    Content-Security-Policy-Report-Only: default-src 'self'; form-action 'self'
    

    8、设置 HttpOnly 的 Cookie,保护用户免受 XSS 攻击

    为 Cookie 设置 HttpOnly 属性,可以防止 Cookie 被 JavaScript 代码访问。一旦跨脚本攻击发生,该设置也会让黑客更难窃取到 Cookie 信息。当然,有些需要被 JavaScript 代码访问的 Cookie,就不能做这个设置了。

    Set-Cookie: foo=bar; ...other options... HttpOnly
    

    9、针对下载功能,合理设置避免 XSS 漏洞

    向用户提供下载功能时,在 header 中设置 Content-Disposition: attachment,从而避免 XSS 漏洞。该设置将禁止在用户浏览器直接渲染文件,从而避免 HTML 或 SVG 格式的下载文件可能引发的漏洞。如下:

    Content-Disposition: attachment; filename="document.pdf"
    

    假如我们想允许特定的文件(如 pdf)能在浏览器端打开,并且也确定这样是安全的,那么,可以针对该类型文件,将 header 省略掉或是将 attachment 换为 inline。

    10、针对 API 响应,合理设置避免 XSS 漏洞

    反射型文件下载(RFD)攻击往往通过构建一个 URL 从 API 下载一个恶意文件来实现。针对该类漏洞,可采用在 API HTTP 响应中返回带有安全文件名的 Content-Disposition header来防御。

    11、利用现有平台的反跨站请求伪造(CSRF)机制,避免 CSRF 漏洞

    为避免反跨站请求伪造漏洞,务必确保我们所采用的平台开启了反跨站请求伪造功能,并确保该配置发挥了应有的作用。

    12、验证 OAuth 身份认证的 state 参数,避免 CSRF 漏洞

    有一类与 OAuth 身份认证相关的跨站请求伪造漏洞是黑客让用户不经意间采用其账户进行登录。因此,如果有使用 OAuth 身份认证,务必确保对状态(state)参数的验证。

    13、正确使用 HTTP 协议,避免 CSRF 漏洞

    除了 POST、PUT、PATCH、DELETE 以外,不要使用其它 HTTP 方法进行数据更改。GET 请求一般是不包含在反跨站请求伪造机制中的。

    14、为 Cookie 设置同源属性,避免 CSRF、XS-leak、XSS 漏洞

    为 Cookie 设置 SameSite 属性。SameSite 能防止大多数的跨站点请求伪造攻击,而且还可以防止许多跨站点泄漏的漏洞。

    SameSite 属性有两种模式:宽松(lax)和严格(strict)。

    宽松模式可以防止大多数跨站点计时和跨站点请求伪造攻击,但对基于 Get 请求的跨站点请求伪造漏洞无效。如下:

    Set-Cookie: foo=bar; ...other options... SameSite=Lax
    

    严格模式则可以防止该类基于 Get 请求的漏洞,以及反射型的跨站点脚本漏洞。然而,严格模式不适合常规的应用程序,因为它会中断身份验证链接。如果用户已登录某个网站,现在要在新的页面打开指向该应用程序的链接,则打开的新页面将不会为该用户自动登录。由于严格模式的限制,会话 Cookie 也不会随请求一起发送。严格模式设置如下:

    Set-Cookie: foo=bar; ...other options... SameSite=Strict
    

    15、每次登录创建一个新的会话 ID,防止会话固定攻击

    会话固定攻击一般是在以下情形发生:

    1. 攻击者将 Cookie(例如 JSESSIONID=ABC123)注入到用户的浏览器中。不用担心,攻击者有很多方法可以做到这一点。

    2. 用户使用其凭据登录,并在登录请求中提交攻击者设置的 JSESSIONID=ABC123 。

    3. 应用程序对 Cookie 和用户进行身份验证。

    4. 与此同时,拥有该 Cookie 的攻击者也就可以通过该用户的身份进行登录了。

    为了防止出现这种情况,程序中需要在身份验证通过后,创建一个新的会话 ID 返回给用户,而不是验证可能被动了手脚的 Cookie。

    16、合理命名 Cookie,防止会话固定攻击

    难道 Cookie 命名也能影响到网络应用程序的安全性?确实如此!将 Cookie 采用 __Host-** 的形式来命名,浏览器将:

    • 不能通过非加密的链接访问该项 Cookie, 从而避免会话固定攻击以及其它涉及到 Cookie 读取与写入的攻击;

    • 不允许子域名重写该项 Cookie,从而避免来自子域名网站(抑或是被攻陷,抑或本身就是恶意的)的攻击。

    该项设置示例如下:

    Set-Cookie: __Host-foo=bar ...other options...
    

    17、设置 Cache-Control header,防止用户信息被窃取

    缓存是将访问过的网站、下载过的文件全部存储在硬盘的某个位置,直到有人手动删除它们。默认情况下,浏览器会对页面的一切内容进行缓存,从而加快访问速度、节约网络带宽。

    要在公共网络环境保证信息安全,我们需要将所有 HTTP 响应设置一个合适的 Cache-Control header,特别是针对非公开的和动态的内容。

    该项设置示例如下:

    Cache-Control: no-store, max-age=0
    

    18、设置 Clear-Site-Data header,防止用户信息被窃取

    另外一个可以有效保证用户退出后记录即被清除的 header 是 Clear-Site-Data 。当用户退出登录时,可以在 HTTP 请求中携带该 header。浏览器会清除该域名下的缓存、Cookie、存储以及执行上下文。大部分浏览器都支持该 header。

    该项设置示例如下:

    Clear-Site-Data: "*"
    

    19、妥当地处理“退出”,防止用户信息被窃取

    用户退出登录后,务必要对访问令牌和会话识别码进行失效处理。这样,即使攻击者从访问历史/缓存/内存等地方获取到这些信息,它们也不再有效。

    此外,如果有单点登录,切记要调用单点登录的退出端口。否则,因为单点登录会话仍处于活跃状态,此时的退出将会无效,只要用户再次点击“登录”,即可自动登录。

    最后,清理掉你可能用到过的 Cookie、HTML5 存储等。上面提到的 Clear-Site-Data 还未被某些浏览器支持,所以最好还是手工清除一下。

    20、针对 JavaScript 密码采用 SessionStorage,防止用户信息被后来者窃取

    SessionStorage 类似于 LocalStorage,但对每个标签页都是独有的,而且在浏览器/标签页关闭以后将自动清除。

    注意:如果要在系统内打开的多个标签页之间同步用户的授权信息,那就需要用事件来同步 sessionStorage 信息。

    21、不要通过 URL 传输敏感信息

    URL 设计的初衷就不是为了传输敏感信息。它会被显示在屏幕上,存储到浏览器历史记录,也容易随 referrer header 而泄漏,被记录在服务器日志等。所以,切忌在 URL 中传递敏感信息。

    22、采用 Referrer 策略,防止 URL 地址泄露

    默认情况下,当从系统中链接到一个外部网站时,浏览器会设置一个 Referrer 的 header 来告诉该网站此次访问的来源。这个 header 包含了整个 URL 地址,这可能就涉及到一点隐私。

    可以在 HTTP 响应中设置一个 Referrer-Policy 的 header 来禁止该默认行为:

    Referrer-Policy: no-referrer
    

    23、为应用设置独立域名,防止同源应用相互干扰

    如果我们这样设置应用域名:https://www.example.com/app1/ 和 https://www.example.com/app2/,是非常危险的。因为浏览器会认为它们是同源应用,也就是同样的服务主机、端口和模式。正因为是同源应用,它们将对彼此有完全的访问权限。任何影响其中一个的漏洞都会同样影响到另外一个。

    因此,我们需要给每个应用一个独立的域名。所以,这种情况下应该设置为:https://app1.example.com/https://app2.example.com/

    注意:位于同一个域名下的子域名是可以为整个域名设置 Cookie 的。例如 app1.example.com 可以为 example.com 设置 Cookie,而这个 Cookie 也将适用于 app2.example.com。允许为一个站点设置 Cookie 有时会给会话固定等类型的漏洞以可乘之机。公共后缀列表可以用来应对该问题。此外,也可以通过将 Cookie 命名为 __Host- 来防止其被子域名所覆盖。

    24、谨慎采用 CORS(跨域资源共享)

    浏览器的安全模型大部分是依赖于同源策略,它可以防止应用的跨域读取。而 CORS(跨域资源共享)则是一种允许网站进行跨域资源访问的手段。所以,决定使用它之前,最好先搞清楚自己是否真的需要。

    25、限制请求来源

    如果你在 api.example.com 的服务需要被来自 www.example.com 的 GET 请求访问,那么可以在 api.example.com 服务上指定如下header:

    Access-Control-Allow-Origin: https://www.example.com
    

    如果你有个公开的服务接口(比如说一个提供给互联网上 JavaScript 客户端使用的计算器服务),那么你可以指定一个随机的来源:

    Access-Control-Allow-Origin: *
    

    如果你只想让有限的几个域名访问它,那么可以在程序中读取请求的 Origin header,进行比对后处理。不过,建议使用现成的库来操作,不要徒手撸,很容易出错。

    26、谨慎使用 allow credentials 选项

    默认情况下,跨域资源共享是不带用户凭证的。但如果在 Web 服务器端指定如下 header,则将允许携带:

    Access-Control-Allow-Origin: https://www.example.com
    Access-Control-Allow-Credentials: true
    

    这对 header 组合相当危险。因为它会使跨域访问具备已登录用户的权限,并使用该权限来访问网站资源。所以,如果你不得不使用它,务必小心为上。

    27、对 HTTP method 进行验证

    仅允许所需要的 HTTP 方法,从而最小化攻击面。

    Access-Control-Allow-Methods: GET
    

    28、合理使用 WebSockets, 避免反跨站请求伪造等漏洞

    WebSockets 迄今还是比较新的技术,技术文档较少使用它难免会有些风险。所以,采用时务必要做到以下几点:

    • 对连接进行加密

      就像我们应该用 https:// 而非 http:// 采用 WebSockets 时也要使用 wss:// 而非 ws://

    HSTS 也会影响 WebSockets ,它会自动将非加密的 WebSocket 连接升级到 wss://

    • 对连接进行鉴权

      如果使用的是基于 Cookie 的鉴权机制,且 WebSocket 服务器与应用服务器在同一个域名下,那就可以在 WebSocket 中继续使用已有的会话。不过切记要对请求源进行验证!

      如果不是基于 Cookie ,可以在系统中创建一个单次使用、有时间限制并与用户 IP 绑定的授权令牌,用该令牌对 WebSocket 进行授权。

    • 对连接源进行确认

      理解 WebSockets 的一个关键点在于要知道同源策略对其是无效的。任何一个能与你的系统建立 WebSocket 连接的网站,在使用 Cookie 鉴权的时候,都是可以直接获得用户信息的。因此,在 WebSocket 握手时,必须要确认连接源。可以通过验证请求头中的 Origin 参数来确认。

    如果想要做到双重保险,可以采用反跨站请求伪造令牌作为 URL 参数。但针对每个任务则需要创建一次性的独立令牌,而不要直接使用反跨站请求伪造令牌,因为后者主要是用来为应用的其它部分提供安全保障的。

    29、采用 U2F 令牌或客户端证书,保护系统关键用户免受钓鱼攻击

    如果系统可能会面临钓鱼攻击的威胁,说人话也就是,“如果存在这样的可能性:攻击者创建一个假的网站,骗取管理员/CEO 或其它用户的信任,从而盗取其用户名、密码和验证码”,那么就应该使用 U2F 令牌或客户端证书来防止这种攻击,这样的话即使攻击者有了用户名、密码和验证码也无法得逞。

    备注:强调钓鱼防护对于一般用户而言往往会带来不必要的麻烦。然而,提供多一种可选项对终端用户而言也非坏事。此外,向用户提前告知钓鱼攻击的危险也是非常必要的。

    30、针对跨站点泄露进行保护

    跨站点泄露是一系列浏览器边信道攻击。这种攻击使恶意网站可以从其它 Web 应用程序的用户中推测出信息。

    这种攻击存在已有时日,但是浏览器端却是最近才开始添加针对性的预防机制。可以在 这篇文章 中了解关于该类攻击的更多细节以及应该采取的安全控制措施。

    二、服务器端的威胁防御

    其次,是服务器端的威胁防御,这里从应用系统、基础设施、应用架构、应用监控、事件响应等不同侧面,归纳了如下建议:

    2.1 应用系统

    31、对用户输入进行合法性验证

    该类别的措施中最关键的一点就是尽可能严格地对所有用户输入进行合法性验证。适当的验证会使系统漏洞更难被发现和利用。对不合法的用户输入直接拒绝,而不要尝试去清洗。验证方面包括如下:

    • 采用严格的数据类型。针对日期采用 DataTime 类型,数字采用 Integer 类型等等。针对有固定可选项的情况采用枚举类型。尽量避免采用字符串类型。

    • 如果必须采用字符串,至少给一个长度限制。

    • 如果必须采用字符串,将可输入的字符集尽可能地减少。

    • 如果要处理 JSON,使用 JSON 模式进行验证。

    • 如果要处理 XML,使用 XML 模式进行验证。

    32、异常处理优雅化,避免技术细节泄露

    对终端用户不要显示堆栈记录或类似的调试信息。采用全局的异常处理器对异常进行处理,展现给浏览器端简单的错误信息。这样会使攻击者更难发现和利用系统中的漏洞。

    33、不要自己做鉴权

    对用户进行鉴权时可能会出现各种各样的问题:要抵御密码猜想攻击、用户枚举攻击,要管理密码重置、存储用户凭证,样样都不容易。就像密码处理一样复杂,我们普通人还是不要尝试了。

    直接使用 auth0 等类似的工具来进行身份验证,采用一些广泛使用的、安全的软件模块来实现通信协议(常见的为 OpenID connect)。如果不想用 auth0 这类第三方的身份提供商,也可以自己搭建一个类似 KeyCloak 的服务来代替。

    34、对一切都进行鉴权,减少攻击面

    应用系统要默认对一切都进行鉴权,除非是一些静态资源、异常页面或登出页面。

    35、采用多重身份认证

    万一有人破解了身份认证服务呢?如果存在这种担忧,直接上多重身份认证(说人话也就是:除了密码以外,还需要手机验证码)。这样就算身份认证服务被黑、攻击者可以冒充到任何人,还是无法知道手机收到的验证码。

    36、通过严格的权限控制,避免对数据或功能的未授权访问

    权限控制虽不是件容易事,但也有妥善处理的方法:只要时刻记住不要在控制器方法中忘了对用户权限进行验证,从而带来用户越权的漏洞,包括:

    • 不要默认对所有控制器方法开通访问权限。

    • 根据用户角色划分每个控制器的访问权限。

    • 采用方法级别的安全控制,限制对服务方法的访问权限。

    • 采用集中化的权限管理工具,防止对每条记录的非授权访问。

    • 采用前端 Web 应用和后台 API 结合的架构,对每个 App 和 API 均采取权限控制,而不仅是对与互联网连接的部分进行控制。

    为了进一步澄清权限管理工具,这里总结了一些要点:

    • 数据记录要有可以进行权限控制的字段,比如 int ownerId

    • 被授权的用户要有一个 ID。

    • 要有一个类可用来进行权限评估,在数据记录的 ownerId 与 用户的 ID 相匹配时,能判断出用户具有对应的访问权限。

    • 在以上基础上,可以将权限评估类集成到应用平台的权限控制系统中,比如 Spring Security 产品的 PreAuthorize、PostAuthorize 等等。

    • 如果需要更复杂的权限控制,也可以搭建一个完善的 ACL 系统。

    37、采用合适的工具和技术,避免注入漏洞

    注入类的漏洞有很多,而且都很相似,包括 SQL 注入、HTML 注入、XML 注入、XPath 注入、命令注入、SMTP 注入、响应 header 注入等等。名称不同但本质相同,相应地解决方法也类似:

    • 问题原因:使用字符串拼接,来构建特定协议下的参数化消息。

    • 解决方案:采用合适的、安全的、现成的工具来实现这项任务。

    这里不会深入太多细节,只要记住:不管你是什么协议,都谨记上面这点。后面会列举一些常见的注入类漏洞。

    38、创建安全的数据库查询语句,避免 SQL 注入漏洞

    如果要避免 SQL 注入漏洞,那就记住绝不要自己用字符串拼接 SQL 查询语句。采用一个对象关系映射框架(ORM)来实现,可以让开发更高效、应用更安全。

    如果想要构建更细粒度的查询,可以使用更底层一点的 ORM。

    如果不能使用 ORM,那就尝试预处理语句,但也要小心这类语句会比 ORM 更容易出现错误。

    警告:

    ORM 框架也不是万能的,体现在两方面:一是,它对原生的 SQL 查询还是支持的,最好不要使用这类查询;二是,像其它任何软件一样,ORM 框架也会时不时被曝出漏洞。所以,还是遵循我们一而再再而三强调的策略:对所有输入进行验证,采用网络应用程序防火墙(WAF),并保持软件包的更新,这样基本就可以放心了。

    39、谨慎使用操作系统的命令行,防止命令注入的相关漏洞

    如果可以避免,最好不要执行操作系统命令。如果不能避免,那最好遵循以下准则:

    • 采用合适的库/方法来构建命令及其参数。参数必须是 list 类型。不要用单独字符串来创建命令。

    • 不用使用 shell 来调用命令。

    • 预定义好命令参数。比如 curl,如果允许用户通过 -o 来指定参数,那么攻击者就有机会写入到本地文件系统。

    • 了解程序如何执行,并相应地对参数进行验证。再比如 curl,你可能只是想让用户可以拉取某个网站的内容,但如果他拉取了 file:///etc/passwd,那就危险了。

    • 想清楚再行动。在上面的例子中,就算验证了访问地址是以 http:// 或 https:// 开头,攻击者也可以发起以这两类协议开头的攻击,如:http://192.168.0.1/internal_sensitive_service/admin。

    • 再强调一遍:真得要想清楚了再行动。就算你对 DNS 进行验证,确保命令中不含敏感内网地址,你有去禁止将特定 DNS 记录映射到 192.168.0.1 吗?如果答案是否,那就危险了。

    40、合理配置 XML 解析器,避免 XML 漏洞

    作为一种标记语言,XML 的危险性体现在它可以访问系统资源。XSLT 的一些实现甚至支持嵌入代码。因此,在处理时必须非常谨慎。

    • 如果可以,避免接受来自不受信任源的 XML/XSLT。

    • 如果要向 XML、XSLT 或 XPath 传参,记住要使用安全的软件组件,而不要使用字符串连接/格式化的方式。

    • 使用主流、安全的软件组件来解析 XML/XSLT。不要使用错误的库或代码来处理 XML。此外,在任何情况下,都不要试图去徒手撸一个解析器(比如 SAML),非常容易出错。

    • 正确配置解析器:禁用 XSLT 文档、禁用 xinclude、禁用文档类型定义、禁用外部实体,启用 DOS 保护。具体配置在实现时会有所不同,但务必对所选择的解析器进行深入的研究。

    41、采用合适的类构建URL,避免 URL 注入漏洞

    URL 注入经常会在以下情况发生:

    flavour = request.getParam("flavour");
    url = "https:/api.local/pizzas/" + flavour + "/";
    return get(url).json();
    

    如果 flavour 被设置为:

    ../admin/all-the-sensitive-things/
    

    那么这个 API 请求将会变为 https://api.local/admin/all-the-sensitive-things/,是不是很凶险?

    解决方案依然是采用合适的 URL 构建库来为 URL 传参,从而能正确地对参数进行编码。

    42、采用合适的类构建路径,避免路径遍历漏洞

    就像 URL 地址一样,如果攻击者设法在路径中的某个地方偷偷地插入 ../../../ ,文件路径可能最终指向意料之外的位置。要避免这种情况,请创建一个类,采用这个类安全地构造路径,并验证最终路径是否在预期目录中。避免在文件路径中使用不受信任的数据,或者更好的是,完全避免使用文件系统,直接采用云存储。

    43、谨慎采用文件系统,接收不受信任的内容

    如果允许用户写入服务器的文件系统,可能会出现各种各样的问题。改用云存储,或者在数据库中使用二进制 blob。

    如果您必须访问磁盘,则应遵循以下指导原则:

    • 不要让不受信任的数据影响内部文件路径。

    • 将文件保存在远离 webroot 的隔离目录中。

    • 在写入磁盘之前,请验证文件内容是否与预期格式匹配。

    • 正确设置文件系统权限以防止写入不需要的位置。

    • 不要提取压缩包(例如 ZIP),因为它们可以包含任何文件,包括指向系统任意地方的链接和路径。

    44、不要动态执行代码,避免远程代码执行漏洞

    不要使用 eval 或等效函数。找到一种其它的方法来实现代码执行。否则,不受信任的数据将有可能进行函数调用,从而在有机会在服务器上执行恶意代码。

    45、合理采用序列化,避免反序列化漏洞

    对不受信任的数据进行反序列化是很危险的,很容易导致远程代码执行。

    • 如果可以避免,不要使用序列化。

    • 如果可以在服务器端序列化对象,则对其进行数字签名。当需要再次反序列化它们时,请在继续反序列化之前验证签名。

    • 使用一些主流的软件组件,并保持更新。许多反序列化库会一直被发现漏洞。GSon 是个不错的选择。

    • 使用简单的文本格式,如 JSON,而不是二进制格式。此外,应该避免像XML这样有问题的格式,因为这样除了反序列化之外,还需要担心 XML 漏洞。

    • 在处理序列化对象之前验证它。例如:对于 JSON,在继续反序列化之前,根据严格的 JSON 模式验证 JSON 文档。

    2.2 基础设施

    46、采用网络应用程序防火墙(WAF)

    安装防火墙,会减少很多风险。ModSecurity 就是一个很好的开源选择。

    47、配置 Web 服务器,避免 HTTP desync 攻击

    HTTP desync,也称 HTTP 请求走私攻击,是指攻击者劫持随机用户向系统发出的 HTTP 请求。这类攻击一般在以下情况下发生:

    • 前端服务器,比如负载均衡器或反向代理服务器,接受携带有 Content-length、Transfer-Encoding 等头部参数的请求时,将请求未经处理随即传递到后台;

    • 后台接受该请求的服务器(通常是应用服务器),采用(或被欺骗采用)一个不同于前端服务器的机制来确定 HTTP 请求从何处开始、何处结束,比如前端服务器使用 Content-Length,而应用服务器采用 Transfer-Encoding;

    • 前端服务器重复利用与后端服务器的连接;

    • 前端服务器在与后台服务器连接时采用 HTTP/1(而非 HTTP/2)。

    那么该如何进行防范呢?一般是根据所采用的产品:

    • 咨询所采用的反向代理产品供应商,确保该产品具备主动防范攻击的能力;

    • 配置前端服务器,在与后台连接时采用 HTTP/2;

    • 配置前端服务器,防止利用同一个连接发送多个客户端的 HTTP 请求;

    • 采用网络应用程序防火墙(WAF),并确保其具备防止请求走私的模块。

    48、采用容器

    让目标应用隔离其他应用来运行。这样,即使发生了攻击事件,攻击者也不会有权限去访问未经许可的文件、系统或网络资源。因此,最好使用 Kubernetes 或一个云端环境来部署你的应用。如果因为某种原因必须使用一台服务器,那么可以手动采用 Docker 来约束应用。

    49、使用 SELinux/AppArmor

    即使通过容器来运行应用,也还是需要进一步采用 SELinux 或 AppArmor 策略来进一步地对应用做出约束,从而减少容器漏洞引发的威胁。

    50、采用最少权限的服务账户

    这种方法带来的好处是即使发生了被攻击事件,也能减少被攻击造成的损失。再次重申,列出所有的情形是不可能的,这里仅列举一些例子帮助大家理解:

    • 即使使用了 Docker,甚至是使用了 SELinux/AppArmor,不要用 root 账户来运行你的应用。为你的应用单独创建一个具备尽可能少的权限的账户,从而降低攻击者利用容器或内核漏洞等进行攻击的可能性;

    • 如果有使用数据库,确保应用程序中的数据库用户在访问数据库时具备尽可能少的权限;

    • 如果应用中集成了 API,确保应用访问 API 时具备尽可能少的权限。

    51、限制外部网络连接

    攻击者通常需要建立一定的反向通信渠道来建立操控渠道或窃取数据。此外,一些漏洞也是需要外部网络连接才会被发现、被利用。

    因此,不能让应用随便访问外部网络,包括 DNS。试下在服务器运行命令 nslookup www.example.com,如果运行成功,则说明你没有对外部网络连接做出适当的限制。如何处理此类问题,一般则取决于基础设施。

    针对外部的 TCP/UDP/ICMP 连接,一般可以通过以下方式禁用:

    • 网关防火墙,如果有的话;

    • 如果是老式服务器,可以采用本地的防火墙(例如 iptables 或 Windows 防火墙);

    • 如果服务器端采用 Docker,可以使用 iptables;

    • 如果使用了 Kubernetes,可采用网络策略定义。

    DNS 处理起来稍微麻烦一点,我们通常需要允许对一些 hosts 的访问。

    • 如果有本地的 hosts 文件,那就很简单,可以采取上面的任何一种方式来将 DNS 彻底禁用;

    • 如果没有,那么你需要在你上游的 DNS 中配置一个私有的区域,在网络层限制仅能访问该指定的 DNS 服务器。这个私有区域内只允许对一些预先指定的 hosts 的访问。

    52、跟踪 DNS 记录,防止子域名劫持

    子域名劫持发生场景举例如下:

    1. 假如我们拥有一个域名 example.com;

    2. 针对一次促销活动,我们买了另一个域名 www.my-cool-campaign.com ,然后创建了一个别名从 campaign.example.com 映射到 www.my-cool-campaign.com;

    3. 这次促销活动结束后,www.my-cool-campaign.com 域名也到期了;

    4. 但是,从 campaign.example.com 到 www.my-cool-campaign.com 的别名映射仍存在;

    5. 如果有人购买了这个到期的域名,那么 campaign.example.com 便可以直接指向该域名;

    6. 如果攻击者在 www.my-cool-campaign.com 域名下提供一些恶意内容,那么便可以通过 https://campaign.example.com 域名直接访问到;

    因此,需要随时留意你的 DNS 记录。如果需要处理的类似情况较多,强烈建议你做一个自动监控方案。

    2.3 架构

    53、创建内部 API 用来访问数据源

    对连接互联网的网络应用程序不应该太过于信任。例如,不应允许它进行数据库直连。否则,当有人攻破应用程序时,整个数据库都将面临威胁。

    相反,我们应该搭建多组件组成的架构,例如:

    • 我们域名为 www.example.com 的应用程序使用 auth0 进行鉴权。

    • 该应用程序访问内部 API 服务 api.example.local 时,携带被授权用户的 token,放在请求头部的 Authorization 中。

    • 位于 api.example.local 的 API 服务根据用户的 token 进行访问限制,进而根据被授予的权限读写数据库。

    假如现在有黑客想要攻破我们的应用程序,即使成功,他也没有权限访问整个数据库,而只是利用某个用户的 token,进而访问该 token 所允许访问的那部分数据。

    54、内部连接也需加密和验证

    不要盲目相信内网的安全性,有很多方法可以攻破它。对于系统间的访问,全部采用 TLS(也就是 HTTPS)进行加密,最好在网络和系统两个层次对连接进行鉴权。

    55、对敏感信息集中管理

    如果没有采用合适的敏感信息管理方案,就很难保持授权的短期性化、可审计性和秘密性。因此,建议采用 HashiCorp Vault 一类的工具来集中管理密码、加密 key 等类似信息。

    2.4 监控

    56、收集,分析,报警

    集中收集日志到一个独立系统,比如 SIEM(安全信息和事件监控系统)。在这个系统中,可以在一些表征脆弱性、攻击的事件发生时进行报警。当严重威胁发生时,可以立即通知相关人员。

    57、收集系统安全事件

    最重要的日志来源可能就是系统自身了。当有可疑行为发生时,系统应能引发异常,记录事件,可能的话,甚至可以自动封锁可能带来问题的用户或IP地址。常见可疑行为包括:

    • 输入值的合法性验证错误(例如,试图输入 UI 中不可能提供的值)

    • 访问控制错误 (例如,尝试访问一条在 UI 中不可能出现的记录)

    • 数据库语法错误表示某个人发现了一处 SQL 注入的脆弱性,这时候可要动作快点采取行动了

    • XML 错误表示某个人发现了一处 XML 注入的脆弱性,或者正尝试利用 XXE(XML 外部实体)脆弱性进行攻击

    • 错误请求表示用户可能发送了被应用拒绝的请求。Spring 框架的 RequstRejectedException 就是一个例子

    • 反跨站请求伪造令牌验证错误一般表示有人正尝试寻找系统中存在的脆弱性

    58、收集运行时安全日志

    使用运行时安全监控工具如 Falco 来对异常系统访问进行检测。如果采用了 Kubernetes,那么 Falco 就特别有用。远程也可以对日志进行收集和监控。

    59、收集 SELinux/AppArmor 日志

    假如我们制定了 SELinux 策略防止向外部的连接,但系统忽然向外部某个网站(例如 burpcollaborator.net)发起 HTTP 请求,那就需要立刻引起关注。又或者你的系统尝试访问 /etc/passwd。这两种情况都表示有人已经发现了我们系统中的漏洞。

    60、收集 Web 服务器事件

    对 Web 服务器软件,至少要对访问日志和错误日志进行收集,收集后发送到集中式的日志服务器。在突发事件响应时,这将辅助我们快速理清时间线。

    61、收集网络应用程序防火墙(WAF)日志

    如果你像上文推荐使用了网络应用程序防火墙(WAF),那么也对这个日志进行收集。但不用针对这个日志设置报警,因为它基本上会收到来自互联网各种各样的问题,而且不部分是你不用担心的。

    2.5 事件响应

    62、制定应对计划

    一旦对我们的系统进行了监控和加固,攻击者将难以快速定位系统漏洞,即使最终发现,我们也能快速了解情况。

    但仅了解情况是不够的,还需要做出如下准备:

    • 快速分析系统日志,了解当前状况和需采取的对应措施

    • 在应用防火墙等产品中,快速对个别 url 地址和参数做出限制

    • 如有需要,快速关停系统

    2.6 开发管理

    63、威胁模型

    系统地考虑一下“可能会出现哪些问题”并据此做出调整。设计一个新的系统时,越早开始这一步越好。当对系统发生改变时,再重新梳理一遍这个过程。

    例如:

    小王:如果攻击者攻破了我们连接了互联网的服务器,怎么办?

    小陈:那可就完蛋了!

    小王:好吧!这就说明我们在这里存在着一个信任关系,我们认为连接了互联网的服务器是不会被攻破的。我们可以信任这一点吗?

    小陈:未必吧!有一百种可能导致我们的服务器被黑掉,例如我们代码中存在的脆弱性,或者依赖中存在的脆弱性,或者是我们 Web 服务器所安装软件的脆弱性。

    小王:好吧!那就让我们打破这层信任关系。接下来该做些什么呢?

    小陈:我们这样来分解一下系统:创建一些内部的接口用来实际访问数据库,由此以来,前端的 Web 服务器就不能直接访问后台的所有东西。

    小王:这是个好办法!除此以外,还有其它什么可能出问题呢?

    小陈:嗯,如果黑客攻破了我们的内网呢?

    小王:那所有东西都要丢失了,因为内网里服务器之间的连接都是未加密的。

    小陈:……

    这就是威胁模型,它不需要多么复杂。使用这种方式,来找出系统中可能存在的威胁。

    64、源代码强制审查

    通过技术控制手段,防止代码未经他人审核便提交入库。这是构建安全开发环境的基础,因为它可以做到:

    1. 如果攻击者攻陷了一个开发人员的电脑,或者是开发人员自身企图发起攻击,将不能直接将恶意代码迁入代码库;

    2. 如果开发人员的错误导致引入了有漏洞的代码,很可能在被其他人检查时及时发现。

    65、自动化持续集成管道,仅允许简单访问

    开发人员应该有权限触发 Jenkins 构建,且 Jenkins 权限配置也仅该如此,不要再允许其它权限。单个开发人员应该不能在构建阶段引入任意代码。当然,如果像上文推荐的强制性地采用了代码审查,Jenkinsfile 也可以保存在版本管理工具中。

    66、对 artifacts 进行签名

    如果是构建容器镜像,可以把对镜像签名作为构建的一步。将签名密钥存储在安全的地方。构建阶段需要访问密钥,但是杜绝将密钥与 Jenkinsfile 一起存储在版本管理工具中。更好的方式是将密钥存储在 HashiCorp Vault 之类的地方,然后在构建时再进行拉取。

    67、持续集成管道中加入静态应用程序扫描器

    在持续集成管道中使用 SpotBugs 和 Find-Sec-Bugs(或者根据你所采用的技术栈进行选择)之类的工具。它们可以帮你在部署代码之前发现已知的漏洞。

    此外,也可以作为 IDE 的插件安装在开发人员的电脑上,在代码迁入之前就运行这些工具进行检查。

    68、构建时对依赖进行检查,保证最小的依赖集

    应用程序中依赖的每个软件包都是一个风险来源。通过依赖,我们拉取了第三人的代码并在我们的应用服务器上执行,所以,必须要搞清楚我们依赖的这个软件包是什么,为什么会依赖它?

    1. 保持最小的依赖集;

    2. 仅使用我们所信任的依赖。它们必须是广泛使用和广为人知的;

    3. 采用构建框架,对依赖进行确认。

    此外,严格控制应用服务器的对外连接,从而避免后门的存在。

    69、对依赖进行安全扫描

    使用 OWASP 依赖检查工具对依赖中常见的安全问题进行扫描。除了在持续集成管道中,也可以在开发人员的开发环境运行这些工具。

    70、持续集成管道对镜像进行安全扫描

    如果采用了容器化技术,可以使用 Trivy 等工具对容器镜像进行一些常规漏洞的扫描。

    71、自动化部署和签名验证

    开发人员可以有权限到生产环境中部署,但是权限范围应该控制在前阶段已经构建和签名过的特定镜像,而不是直接访问生产服务器。如果是使用 Kubernetes,可以通过 Notary 或开放策略代理来验证待部署镜像的签名。

    72、设置一个安全人员

    一个人的精力是有限的。我们不能期望每个开发人员都精通渗透测试或是安全工程师。正如你不能期望所有的安全专家都是优秀的开发人员一样。因此,可以在团队中设置一个专门关注安全的人员,主要与开发人员、架构师进行交流,帮助保护我们的应用程序并在团队中传播安全意识。

    三、结论

    保证应用程序的安全性,光靠避免漏洞时不够的,必须全面通盘考虑,主动进行防御。这里对一些主要方法进行了总结:

    • 使用最新版本的的软件组件来执行危险的操作,如身份验证、访问控制、加密、访问数据库或解析 XML,并确保正确配置了这些组件,例如 XML 解析时禁用外部实体。

    • 使用平台提供的安全控制,例如反跨站请求伪造保护。

    • 使用 Web 浏览器提供的安全控件,如 HSTS、SameSite Cookie 和内容安全策略。

    • 对安全控制进行集中化处理,特别是身份验证和访问控制,从而避免一些遗漏,如在某些控制器方法上忘记对安全进行控制。

    • 使用 Web 应用程序防火墙,防止应用程序漏洞被发现和被利用。

    • 通过限制对文件、网络和系统资源的访问来对应用程序进行限制。

    • 利用威胁模型发现架构中的威胁,并相应进行处理。既包括在源代码层面对每个开发人员的源代码进行安全控制,也包括在架构层面对前端 Web 服务器的安全控制。

    • 对系统进行监控,制定异常处理预案。

    • 在开发环境和持续集成环境中使用漏洞扫描程序对代码、镜像、依赖进行扫描。

    • 对开发人员、架构师等开展安全培训,并在团队中配备一名安全人员。

    感谢原作者的翻译授权:



    如果你看到最后一定是收获颇丰,这里还有一个收获更多知识的方法,但比读完这篇文章要难得多,加入我们一起变强!

    变强之路充满荆棘,所以强者才受人尊敬

    ????「点击关注」第一时间收到更新????

    展开全文
  • 淘宝客户端安全生产体系建设

    千次阅读 2021-11-26 12:03:01
    从研发、构建、发布、应急四阶段,看淘宝客户端是如何来建设自身的安全生产体系。

    作者:秦静超(非台)

     本文主要讲述了淘宝客户端的安全生产,即在阿里内外成熟的技术方案的基础上,淘宝客户端是如何来建设自身的安全生产体系,从研发、构建、发布、应急四个阶段再次推动效率和用户体验不断得到升级。

    安全生产

    首先我们将“客户端安全生产”定义为:为预防客户端研发生命周期过程中发生体验相关的事故,而采取的一系列措施和活动。

    为此淘宝客户端建立了“‘研发、构建、发布、应急’一整套规范化流程及平台”。

    图1 安全生产架构图

    淘宝客户端安全生产,主要分四个阶段:研发期、构建期、发布期和应急态,同时沉淀开发过程数据,围绕数据线上线下异常复盘,为提升代码质量、提升开发能力,进一步完善平台做数据支持,从而提升开发的良好研发环境,保障线上用户使用体验。

    • 研发期:这一阶段主要是指开发同学把需求开发的阶段,往往是单模块的开发,这一阶段主要关注模块自身的质量,这一阶段安全生产平台主要通过需求管理、代码分支管理、单测管理、Code Review、测试请求|审批,一站式的方式为开发同学提供便利;
    • 构建期:这一阶段主要是指开发同学把已经通过测试的代码,将代码提交到集成区做代码的集成测试,这一阶段安全生产平台主要通过质量卡口、包大小分析、产物校验来确保集成进来的模块是否满足集成标准(重复的资源文件、代码等或高危的隐私API、调试代码等或不合理的组件导出、DEBUG代码等),通过前置风险分析,防止风险代码集成;
    • 发布期:这一阶段主要在通过测试后发布(灰度、正式)完整的APP、配置变更、活动上线下线,这一阶段需关注APP稳定性数据、性能数据、业务数据与舆情数据(端到云的监控方案),确保发布的APP满足用户的体验要求;
    • 应急态:前三个阶段主要是规避线上风险线,这一阶段则是在线上APP无法满足用户正常使用时所进入的状态,线上核心指标波动,会触发及时告警,从而通过钉钉快速组建应急小队,对线上问题进行处理,分析问题及问题背后的原因,快速给出解决方案,通过预案回滚、降级处理等手段快速化解线上风险,从而避免风险升级,防止故障产生。

    另外为了确保线上APP的高可用体验,淘宝端架构专门成立了“端侧日常保障”小组,主要从事版本值班、大促保障、应急处理、复盘优化等工作,从日常工作中不断的发现问题、总结思考、优化流程、改进研发环境,不断把部分需要人工介入的流程自动化、数据化、平台化,从而提高“研发、构建、发布、应急”阶段的研发体验和研发效率,最终把人力从重复的、低效的工作中释放出来,通过过程数据不断优化安全生产平台体验,从而保障上层业务健康持续发展。让开发有更多的时间和精力从事更高维度的研发工程,提升开发的成就感。

    研发期

    研发期主要是开发同学开发为主,这里平台提供了代码覆盖率(单测),核心模块中间件的单测代码覆盖率需要满足80%及以上,核心变更需要双人CR(含TL),非核心变更需要技术专家及以上CR。

    构建期

    质量卡口

    随着淘宝业务不断扩张,线上问题时有发生,淘系的场景非常丰富,本地的测试、Review、Monkey、甚至灰度等手段都不能覆盖到所有的场景。但问题一旦到了线上,所花费的成本都急剧增加。

    经过对历史线上问题进行一些分析,发现其中的相当一部分问题,可以通过 “静态代码分析”, “二进制产物分析” 等方法提前发现,那么为什么不能用技术的手段来提前发现问题,阻断它们溜到线上呢。例如:

    1. 同名 Category 方法冲突问题, 导致手淘很多功能异常;
    2. @{} 初始化没判空问题;
    3. oc block持有 c++ this指针导致 User After Free 问题;
    4. objc_msgSend 发送 alloc 导致内存泄露问题;
    5. 一些系统api不再安全,比如vm_remap;
    6. 组件导出;
    7. 线程泄漏;
    8. ......

    这些问题上线后可能就引起很难定位的问题,但是在代码阶段,通过静态分析等手段就可以阻断他们的发生。因此客户端质量卡口平台应运而生,将手淘客户端已有问题扫描工具和规则整合,结合DevSecOps卡口设计的开放卡口接入平台,形成完整的客户端线下问题发现、治理推动和集成卡口的能力,减少线上问题。

    技术方案上,在Android Lint+Spotbugs+Clang Static Analyzer(Android),OCLint(iOS)+Clang Static Analyzer基础上结合淘系具体平台和具体问题进行改进,以满足淘系的技术需求(如扫描线程原生接口使用,辅助淘系整体线程架构迁移)。

    包大小

    包大小是客户端的非常重要的性能指标。从用户视角看,同样的功能和服务,用户倾向于选择安装包比较小的App,可以让用户用更少的流量下载和更新,一定程度提高用户的下载率和更新升级率,对于推广和新增都会有较为重要的影响;从技术视角看,安装包中的每个文件都在瘦身的范围,对不同的文件类型,需要有针对性的瘦身方案,所以瘦身是一个大工程,包含了很多方面的技术。

    Android采用了图片压缩(TinyPng,Webp),重复资源合并、shrinkResource 严格模式、分包、Proguard、ARSC瘦身、下无用代码(代码插桩分析)、无用业务下线、远端so、检测so调试信息。

    iOS采用了图片压缩(TinyPng,Webp)、编译优化(不导出符号、oz、lto)、selectorRef无用资源下线,剔除重复代码、业务下线、共享动态库技术(<iOS9)、Ld链接器压缩。

    产物校验

    产物校验发生在APP发布前的最后一个环节,主要来分析本次发布与上一次发布核心变更存在哪些具体的差异,来确保本次发布的正确性。这一环节主要进行了核心代码变更分析(启动、CrashSDK、监控SDK),需要关注核心代码变更带来的可能的风险;组件导出分析,防止不必要的组件导出,受到外部攻击;签名校验,防止签名出错导致APP无法正常上架;等等。

    发布期

    监控告警

    淘系高度重视手机用户的稳定性和性能,通过高可用的度量指标的建立,稳定性和性能的治理,自动化和数据平台的建设,开发了一套系统化的解决方案及平台EMAS-MOTU,全方位的提升手机淘宝稳定性和性能。

    变更管控

    淘系是一个高频活动运营APP集,我们发现有一些故障是由变更导致的(含活动上线,配置上线等),具有强相关性。因此淘系沉淀了变更管控平台,变更管控平台主要作用是监控分析平台发现的异常数据(Crash、ANR、卡断、泄漏等)与变更的相关性。

    变更管控平台的核心思路是为每一次变更产生一个唯一的变更ID,并在本次变更下发的过程中,将变更ID加入到监控信息的变更ID集里,当监控信息上报时会带上所有的变更ID,服务可以对变更ID进行聚类分析,通过相关性确认相同聚类问题是由哪些变更ID产生的,并对具体的变更留观或回滚,防止风险升级。

    通过精确的变更相关灰度染色数据,管控相关灰度和全量发布,及时卡住异常发布,避免发布引起故障,同时也是提高发布效率的核心手段。

    应急态

    定位

    追踪、度量、日志

    随着客户端功能不断细化与完善,模块化、跨团队的协同开发方式已经成为了客户端开发标准的开发方式,模块化、跨团队的协同开发方式的诞生极大提升了客户端交付与部署的效率,但同时可以看到这种模块化、跨团队的架构背后,原先运维与诊断的需求也变得越来越复杂。为了适应客户端日益增长的功能需求,需实现面向用户视角的标准化的DevSecOps诊断与分析系统,包括追踪(Tracing),度量(Metrics),日志(Logging)。

    • Tracing :用于记录客户端行为范围内的信息,它在单次请求的范围内,处理信息。任何的数据、元数据信息都被绑定到系统中的单个事务上。例如,用户进入页面,到数据渲染的过程。它是我们排查客户端问题的利器;
    • Metrics :用于记录可聚合的数据。他们具有原子性,每个都是一个逻辑计量单元,或者一个时间段内的柱状图。例如:队列的当前深度可以被定义为一个计量单元,在写入或读取时被更新统计;输入HTTP请求的数量可以被定义为一个计数器,用于简单累加;请求的执行时间可以被定义为一个柱状图,在指定时间片上更新和统计汇总。例如,从客户端发起的网络请求数,与正确收到网络数据的接受。它是我们衡量业务宏观质量的利器;
    • Logging :用于记录离散的事件。例如,应用程序的调试信息或错误信息。它是我们诊断问题的依据。

    基于追踪(Tracing),度量(Metrics),日志(Logging)的设计原则,淘系借鉴了OpenTracing实现了全日志平台TLog。通过漏斗模型、对比模型通过数据横向对比可以快速发现自身的性能瓶颈,缩小范围,提升排查效率。

    全景定位

    淘系是一个高频活动运营APP集,我们发现一些故障是由变更导致的(含活动上线,配置上线等),具有强相关性。因此淘系沉淀了全景定位平台,全景定位平台主要作用是监控分析线上的变更。全景定位平台的核心思路是当线上风险产生时,全景定位平台会主动去收集线上变更,并按时间维度呈现出来,开发可基于全景定位平台快速查看线上变更,定位和排查线上风险与变更的相关性,对潜在风险的变更留观或回滚,直至风险消除。

    全景定位与变更管控有一定的相似性,都是对线上变更的监控与分析,区别在于全景定位主要在风险发生后对变更进行分析(业务在变化,无法保障所有的变更都会接入变更管控),变更管控则主要风险发生前打标,风险发生后对变更进行分析,因此全景定位是变更管控的一种补充与保障。

    恢复

    “对代码功能不符合项目预期或代码不够健壮导致App运行时崩溃或异常的线上问题进行恢复”。恢复是淘系应对线上突发问题的重要手段,淘系目前对线上不同的场景采用了不同的恢复策略,目前主要恢复策略有降级、预案、安全模式。

    降级

    在淘系复杂生态的环境下,大促期间还是会出现由于各种重资源的业务叠加,导致卡顿,体验明显下降,内存水位暴涨,崩溃率也会随之飙升。因此从2018年开始,尝试开始对重资源、高风险业务,针对不同设备的性能情况进行多维度降级。目的是对用户体验进行分级,实现 “高端设备最炫体验,低端设备流畅优先,紧急问题快速降级”(随着时间的推移,老的设备的软硬件条件,已经无法满足所有新技术、新业务的落地,需要有一定的取舍,从而给每一个设备最佳的用户体验)

    针对不同设备的软硬件不同特性,基于Listwise-SmartScorer模型,淘系对客户端设置了高、中、底三个维度,0-100(0表示设备性能优于市场上主流的0%的设备,100表示设备性能优于市场上主流的100%的设备)的动态的设备评分算法。

    设备评分是个什么?从机器学习的角度来看:它可能是一个分类问题,即设备分为高/中/低三类,我们需要区分这几个类;它可能是一个回归问题,即设备存在一个绝对的分,我们需要去拟合这个分。无论分类还是回归问题,都把设备评分定义为一个绝对的值,而在实际体验中,我们往往说“iPhone X”比“iPhone 8”快,而不是说“iPhone X” 90分,“iPhone 8” 70分,即设备评分是相对的,同时由于设备的损耗,它的评分也是动态的,基于此,我们把设备评分定义为一个排序问题。

    在设备评分的基础上,实现统一降级平台,业务可以通过“高、中、底”或“0-100”选取相应的设备投放自身业务。

    预案

    什么是预案?根据评估分析或经验,对潜在的或可能发生的突发事件的类别和影响程度而事先制定的应急处置方案。预案可以降低可预估或不可预估的风险,减少损失,而当下面临大多数的风险,都来自于各类变更,还有阿里最重要的大促场景下,大流量所带来的系统、业务压力。预案有分提前预案和应急预案。

    提前预案:也称定时预案,提前预估大促期间的系统状况与业务状况,为了避免大促的业务峰值影响而进行的缓存预热、机器重启、有限降级、磁盘清理或者业务下线等等,一般对业务无影响或影响可控。

    应急预案:针对可能存在的应急情况,如超出预期的异常流量、系统依赖超时及不可用、本系统的非预期不可用等采取的应急手段,一般对业务有损,同时可能会带来客诉,资损等,需要对应的技术、业务等兜底,执行需要慎重。在新增变更中,在Code Review环节,对代码有“可灰度、可监控、可回滚”(稳定性三板斧)要求,即确保代码有应急预案,在线上代码出现风险时,快速回滚。

    预案和降级的区别在于,预案对全部设备采取相同的策略,而降级是对不同的设备采用不同的策略。

    安全模式

    恢复场景,(启动阶段)未正常使用网络的崩溃问题。网络未初始化导致配置无法下载发挥作用,于是淘系开发了一个安全模式(在连续触发相同Crash后强制进入“安全模式”--Android轻量级子进程,iOS进入安全模式代码,用来在对程序恢复初始状态(清除历史产生的持久化信息),如有必要会触发配置的下载),为主进程正常启动做必要的保障。如:启动时候因为持久化数据出错,导致APP启动连续闪退,这时安全模式可以发挥巨大作用,弥补配置下发执行前的代码盲区,避免用户只能通过卸载重装APP才能解决问题。

    总结

    客户端安全生产是在淘系较为完善的底层基础设施上建立起来的规范化、自动化、数据化的平台。文中涉及到的技术点是借鉴了阿里内外众多开发、产品、运维等从业人员对历史问题的总结与实现,这里感谢参与安全生产小伙伴的努力与付出,同时也感谢阿里以外的开发、产品、运维对丰富客户端技术、改进用户体验的努力与付出。文中更多的是对APP不同阶段的问题的思考与解问题的思路,希望对大家有帮助。

    参考

    [1] 移动研发平台EMAS:https://www.aliyun.com/product/emas

    [2] OpenTracing:https://github.com/opentracing

    [3] 安全模式:天猫 App 启动保护实践:https://juejin.cn/post/6844903437948157959

    关注【阿里巴巴移动技术】官方公众号,每周 3 篇移动技术实践&干货给你思考!

    展开全文
  • 安全生产模拟考试一点通:危险化学品生产单位安全生产管理人员最新解析参考答案及危险化学品生产单位安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品生产单位安全生产管理人员操作证已考...

    题库来源:安全生产模拟考试一点通公众号小程序

    安全生产模拟考试一点通:危险化学品生产单位安全生产管理人员最新解析参考答案及危险化学品生产单位安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品生产单位安全生产管理人员操作证已考过的学员汇总,相对有效帮助危险化学品生产单位安全生产管理人员作业模拟考试学员顺利通过考试。

    1、【单选题】安全检查是指对生产过程及安全管理中可能存在的事故隐患、危险与有害因素、安全缺陷等进行()。(  C  )

    A、识别

    B、检验

    C、查证

    2、【单选题】在生产过程、劳动过程、( )中存在的危害劳动者健康的因素,称为职业性危害因素。(  A  )

    A、作业环境

    B、卫生环境

    C、家庭环境

    3、【单选题】《常用危险化学品分类及标志》按易燃液体闪点的高低分为( )易燃液体。(  B  )

    A、二项

    B、三项

    C、四项

    4、【单选题】易燃液体在运输、泵送、灌装时要有良好的( )装置,防止静电积聚。(  A  )

    A、接地

    B、防火

    C、监测

    5、【单选题】《危险化学品安全管理条例》规定,生产、储存危险化学品的单位,应当在其作业场所设置( )装置,并保证处于适用状态。(  B  )

    A、通风防爆

    B、通信报警

    C、通风报警

    6、【单选题】《中华人民共和国安全生产法》规定,安全生产工作应当以人为本,坚持( )的方针。(  B  )

    A、安全第一、预防为主

    B、安全第一、预防为主、综合治理

    C、安全第一、以人为本

    7、【单选题】若发现某化学品新的危害性,在有关信息发布的多长时间内,生产企业必须对安全技术说明书的内容进行修订()。(  A  )

    A、半年

    B、一年

    C、三个月

    8、【单选题】坠落防护应通过采取( )等措施来实现。(  C  )

    A、消除坠落危险、坠落控制、坠落防护

    B、消除坠落危害、坠落控制、坠落防护

    C、消除坠落危害、坠落预防、坠落控制

    9、【单选题】危险化学品单位应当将其危险化学品事故应急预案报所在地设区的市级人民政府安全生产监督管理部门( )。(  B  )

    A、评审

    B、备案

    C、发布

    10、【单选题】某电化厂液氯工段发生液氯钢瓶爆炸,造成该工段414㎡厂房全部摧毁,相邻的冷冻厂厂房部分倒塌,两个厂房内设备、管线全部损毁。并造成附近办公楼及厂区周围280余间民房不同程度损坏。液氯工段当班的8名工人当场死亡。更为严重的是爆炸后氯气扩散7km,由于电化厂设在市区,与周围居民区距离较近,事故共导致千余人氯气中毒,数人死亡。直接经济损失若干。经调查最初爆炸的1只液氯钢瓶是由用户送到电化厂来充装液氯的。该用户在生产设备与液氯钢瓶连接管路上没有安装止逆阀、缓冲罐或其他防倒罐装置,致使氯化石蜡倒灌入液氯钢瓶中,而且在送来此钢瓶时也未向充装单位声明情况。负责充装钢瓶的液氯工段工人在充装液氯前没有对欲充装的钢瓶进行检查和清理,就进行液氯充装。充装时,钢瓶内的氯化石蜡和液氯发生化学反应,温度、压力升高,致使钢瓶发生爆炸,并导致周围钢瓶相继爆炸。双方工人均未经特种作业人员培训和考核,没有事故应急预案。根据上述描述,该事故发生的间接原因是()。(  C  )

    A、充装方工人违章操作

    B、用户方违章造成液氯钢瓶内混入氯化石蜡

    C、双方工人均未经特种作业人员培训和考核

    11、【单选题】国务院地震工作主管部门和省、自治区、直辖市人民政府负责管理地震工作的部门或者机构,负责审定建设工程的( ),确定抗震设防要求。(  B  )

    A、安全评价报告

    B、地震安全性评价报告

    C、地震安全专篇

    12、【单选题】重复使用的危险化学品包装物、容器在使用前,应当进行检查,并做出记录;检查记录应当至少保存( )年。(  B  )

    A、1

    B、2

    C、3

    13、【单选题】《安全生产法》规定,生产经营单位的安全生产管理人员应当根据本单位的生产经营特点,对安全生产状况进行经常性检查;对检查中发现的(??),应当立即处理;不能处理的,应当及时报告本单位有关负责人,有关负责人应当及时处理。检查及处理情况应当记录在案。(  B  )

    A、质量问题

    B、安全问题

    C、工作问题

    14、【单选题】判定某一化学品是否是有毒品的判定依据中的毒性数据LD₅₀,所使用的试验动物是( )。(  A  )

    A、大鼠

    B、小鼠

    C、豚鼠

    15、【单选题】噪声与振动较大的生产设备当设计需要将这些生产设备安置在多层厂房内时,宜将其安排在( )。(  A  )

    A、底层

    B、上层

    C、顶层

    16、【单选题】IEC关于接地分为三大类,其中(接地的电网)电气设备金属外壳采用保护接零的是( )。(  C  )

    A、IT系统

    B、TT系统

    C、TN系统

    17、【单选题】《中华人民共和国突发事件应对法》规定,突发事件应对工作原则为预防为主、( )。(  A  )

    A、预防与应急相结合

    B、安全第一

    C、以人为本

    18、【单选题】锅炉燃烧装置的调试包括燃烧状况的调整和( )。(  B  )

    A、水位控制装置的调试

    B、燃料的调节

    C、温度控制

    19、【单选题】向镁、铝等粉尘爆炸性混合物内充填( )可起到防止静电爆炸和火灾的作用。(  B  )

    A、氮气

    B、氩

    C、二氧化碳

    20、【单选题】配电室等安装和使用非防爆电气设备的房间宜采用( )型防爆电气设备。(  A  )

    A、正压型

    B、隔爆型

    C、充油型

    21、【单选题】比较适于扑灭电气设备火灾的是( )。(  B  )

    A、水

    B、二氧化碳

    C、沙石

    22、【单选题】企业要按照国家有关规定实行重大危险源和重大隐患及有关应急措施备案制度,( )至少要进行一次全面的安全生产风险分析。(  C  )

    A、每年

    B、每季度

    C、每月

    23、【单选题】新投用的燃油锅炉必须对锅炉的燃烧装置、安全附件等进行( )。(  B  )

    A、重新安装

    B、调试

    C、故障检查

    24、【单选题】C类火灾指的是( )火灾。(  C  )

    A、固体物质

    B、液体物质

    C、气体物质

    25、【单选题】《中华人民共和国安全生产法》规定,工会依法组织职工参加本单位( )工作的民主管理和民主监督,维护职工在安全生产方面的合法权益。(  C  )

    A、劳动保护

    B、安全卫生

    C、安全生产

    26、【单选题】天然气燃烧火灾是( )类火灾。(  C  )

    A、A

    B、B

    C、C

    27、【单选题】石油化工企业中,无飞火的明火设备,应布置在有散发可燃气体的设备、建筑物的主导风向( )。(  C  )

    A、下风头

    B、下风头和侧风头

    C、上风头和侧风头

    28、【单选题】某韩国独资制鞋有限公司,2004年7月22日至8月7日,接连出现3例含苯化学物及汽油中毒患者(经职业病医院确诊)。3名女性中毒者都是在该公司生产流水线上进行手工刷胶的操作工。有关人员到工作现场调查确认:(1)在长70m、宽12m的车间内,并列2条流水线,有近百名工人进行手工刷胶作业;(2)车间内有硫化罐、烘干箱、热烤板等热源,但无降温、通风设施,室温高达37.2℃。(3)企业为追求利润,不按要求使用溶剂汽油,改用价格较低、毒性较高的燃料汽油作为橡胶溶剂,使得配制的胶浆中的含苯化学物含量较高。(4)所有容器(如汽油桶、亮光剂桶、胶浆桶及40多个胶浆盆等)全部敞口。(5)操作工人没有任何个人防护用品。(6)经现场检测,车间空气中苯和汽油浓度分别超过国家卫生标准2.42倍和2.49倍。根据上述描述,()必须采用有效的职业病防护设施,并为劳动者提供个人使用的职业病防护用品。(  B  )

    A、政府

    B、用人单位

    C、工会组织

    29、【单选题】受理备案登记的安全生产监督管理部门应当对应急预案进行( ),经审查符合要求的,予以备案并出具应急预案备案登记表;不符合要求的,不予备案并说明理由。(  C  )

    A、要素审查

    B、内容审查

    C、形式审查

    30、【单选题】通常情况下,液体的燃烧难易程度主要用( )的高低来衡量。(  A  )

    A、闪点

    B、自燃点

    C、最小点火能量

    31、【单选题】职业病目录中,尘肺病有( )种。(  B  )

    A、11

    B、13

    C、17

    32、【单选题】重大事故隐患,由生产经营单位( )组织制定并实施事故隐患治理方案。(  A  )

    A、主要负责人

    B、负责人

    C、有关人员

    33、【单选题】变压器中性点接地叫( )接地。(  A  )

    A、工作

    B、保护

    C、安全

    34、【单选题】疑似职业病病人在诊断、医学观察期间的费用,由( )承担。(  A  )

    A、用人单位

    B、当地政府

    C、患者本人

    35、【单选题】在不能利用自然导体的情况下,保护零线导电能力最好不低于相线的( )。(  B  )

    A、1/3

    B、1/2

    C、1/4

    36、【单选题】化学品安全技术说明书“接触控制和个体防护”中不包含()。(  C  )

    A、最高允许浓度

    B、工程控制

    C、危险特性

    37、【单选题】安全泄放系统是由泄放路径和( )构成的。(  A  )

    A、泄放装置

    B、爆破片

    C、泄放口

    38、【单选题】生产危险化学品的企业,应附有与危险化学品完全一致的化学品安全技术说明书,并在包装上加帖或者拴挂与包装内危险化学品()的化学品安全标签。(  C  )

    A、完全一致

    B、主要内容相同

    C、相符

    39、【单选题】生产经营单位应对重大危险源采取便捷、有效的( )、治安报警措施和联络通信、记录措施。(  C  )

    A、泄漏

    B、危险

    C、消防

    40、【单选题】化学品安全标签可以不包含( )。(  C  )

    A、信号词

    B、危险性说明

    C、法规信息

    41、【单选题】某电化厂液氯工段发生液氯钢瓶爆炸,造成该工段414m²厂房全部摧毁,相邻的冷冻厂厂房部分倒塌,两个厂房内设备、管线全部损毁。并造成附近办公楼及厂区周围280余间民房不同程度损坏。液氯工段当班的8名工人当场死亡。更为严重的是爆炸后氯气扩散7km,由于电化厂设在市区,与周围居民区距离较近,事故共导致千余人氯气中毒,数人死亡。直接经济损失若干。经调查最初爆炸的1只液氯钢瓶是由用户送到电化厂来充装液氯的。该用户在生产设备与液氯钢瓶连接管路上没有安装止逆阀、缓冲罐或其他防倒罐装置,致使氯化石蜡倒灌入液氯钢瓶中,而且在送来此钢瓶时也未向充装单位声明情况。负责充装钢瓶的液氯工段工人在充装液氯前没有对欲充装的钢瓶进行检查和清理,就进行液氯充装。充装时,钢瓶内的氯化石蜡和液氯发生化学反应,温度、压力升高,致使钢瓶发生爆炸,并导致周围钢瓶相继爆炸。双方工人均未经特种作业人员培训和考核,没有事故应急预案。根据上述描述,危险物品的生产、经营、储存单位应当建立( )。(  B  )

    A、应急救援预案

    B、应急救援组织

    C、应急救援体系

    42、【单选题】人们在生产和生活中为防御各种职业危害和伤害而在劳动过程中穿戴和配备的各种用品的总称称为( )。(  C  )

    A、特种防护用品

    B、一般防护用品

    C、个人劳动防护用品

    43、【判断题】对于放热反应,投料速度不能过快。(  √  )

    44、【判断题】当不断加大向锅炉进水及采取其他措施,但水位仍继续下降时,必须紧急停炉。(  √  )

    45、【判断题】有毒品在水中的溶解度越大,其危险性也越大。(  √  )

    46、【判断题】危险物品的生产、经营、储存单位的主要负责人、安全生产管理人员未按规定考核合格取得安全资格证书的,安全生产监督部门责令其立即停产停业整顿。()(  ×  )

    47、【判断题】由于在容器或管道中的可燃气体浓度在爆炸上限以上,虽然空气能补充或渗漏进去,也不能引起燃烧和爆炸。(  ×  )

    48、【判断题】任何单位和个人不得交寄危险化学品或者在邮件、快件内夹带危险化学品,不得将危险化学品匿报或者谎报为普通物品交寄。()(  √  )

    49、【判断题】生产经营单位在实行“三同时”时,安全设施投资应当纳入建设项目概算。(  √  )

    50、【判断题】应急救援抢险人员应根椐事先拟定的抢险方案,在做好个体防护的基础上,以最快的速度排除险情,要严格避免次生和衍生事故的发生。(  √  )

    51、【判断题】2011年1月某公司1催化装置稳定单元发生闪爆事故,事故造成3人死亡、4人轻伤,事故未造成环境污染。事故的直接原因为重油催化装置稳定单元重沸器壳程下部入口管线上的点排凝阀,因固定阀杆螺母压盖的焊点开裂,阀门闸板失去固定,阀门失效,脱乙烷汽油泄漏挥发,与空气形成爆炸性混合物,因喷射产生静电发生爆炸。根据上述事实,请判断,石油化工装置可能存在的点火源除了静电外,还包括明火、电火花、高温表面等。(  √  )

    52、【判断题】生产经营单位的安全管理人员对由于安全生产所必需的资金投入不足导致的后果承担责任。(  ×  )

    53、【判断题】应急救援预案要有实用性、要根据本单位的实际条件制订,使预案便于操作。(  √  )

    54、【判断题】事故应急救援预案应覆盖事故发生后应急救援各阶段的计划,包括预案的启动、应急、救援、事后监测与处置等各个阶段。(  √  )

    55、【判断题】当氢气泄漏时,人员应迅速撤离泄漏污染区至上风处,并隔离直至气体散尽,切断火源。(  √  )

    56、【判断题】有毒品必须储存在仓库,不得露天存放。应远离明火、热源,库房通风应良好。(  √  )

    57、【判断题】用电火花点燃甲烷和空气的混合物时,当点火能量为0.18mJ,该混合气体便着火。(  ×  )

    58、【判断题】毒物浓度超过国家职业卫生接触限值时,应及时整改复测。(  √  )

    59、【判断题】2011年3月25日上午,某司分包商员工在常减压检修现场进行工程收尾。10时左右,管工刘某与辅助工许某到空冷器顶部平台更换阀门螺栓。刘某站在平台北侧作业,站位距平台边缘约0.6米。11时左右,刘某在作业过程中,扳手与螺母松脱,站立不稳,从平台上后仰、坠落至下层平台,落差5.64米,头部受伤,经医院抢救无效于下午15时死亡。根据上述描述,请判断,高处作业必须系挂安全带。(  √  )

    60、【判断题】危险化学品管理档案应当包括危险化学品名称、数量、标识信息、危险性分类和化学品安全技术说明书、化学品安全标签等内容。(  √  )

    61、【判断题】应急救援指在发生事故时,采取的消除、减少事故危害和防止事故恶化,最大限度降低事故损失的措施。(  √  )

    62、【判断题】在建立警戒区域时,不必要把警戒区和污染区内与事故无关的人员撤离。(  ×  )

    63、【判断题】安全阀与压力容器之间一般不宜装设截止阀门。(  √  )

    64、【判断题】高压容器的使用压力较高,密封是个关键,所以密封结构也是高压容器中的一个主要结构。(  √  )

    65、【判断题】盛装具有腐蚀性介质的容器,底部尽可能不装阀门,腐蚀性液体应从顶部抽吸排出。(  √  )

    66、【判断题】工作场所内危害物质不能控制在一定区域内,这时应采用全面通风的方式。(  √  )

    67、【判断题】同一企业生产、进口同一品种危险化学品的,按照生产企业进行一次登记,但应当提交进口危化学品的有关信息。(  √  )

    68、【判断题】催化反应是在催化剂的作用下所进行的化学反应。(  √  )

    69、【判断题】安全技术说明书的正文应采用简洁、明了、通俗易懂的规范汉字表述,数字资料要准确可靠,系统全面。(  √  )

    70、【判断题】国家对危险化学品的使用有限制性规定的,任何单位和个人不得违反限制性规定使用危险化学品。(  √  )

    71、【判断题】生产经营单位应当建立健全事故隐患排查治理制度。(  √  )

    72、【判断题】任何单位和个人有权对违反法的行为进行检举和控告。(  √  )

    73、【判断题】救援过程中,救援人员在做好自身防护的基础上,应快速实施救援,控制事故发展。(  √  )

    74、【判断题】2008年6月,B炼油厂油罐区的2号汽油罐发生火灾爆炸事故,造成1人死亡、3人轻伤,直接经济损失420万元。该油罐为拱顶罐,容量200?。油罐进油管从罐顶接入罐内,但未伸到罐底。罐内原有液位计,因失灵已拆除。2008年5月,油罐完成了清罐检修。6月6日8时,开始给油罐输油,汽油罐顶输油时进油管内流速为2.3~2.5m/s,导致汽油在罐内发生了剧烈喷溅,随即着火爆炸。爆炸把整个罐顶抛离油罐。根据上述事实,为防止静电放电火花引起的燃烧爆炸,可采取的措施有:控制流速、保持良好接地、采用静电消散技术等。(  √  )

    75、【判断题】特种设备使用单位应当使用符合安全技术规范要求的特种设备。(  √  )

    76、【判断题】腐蚀是材料与周围环境元素发生化学变化而遭受破坏的现象。(  ×  )

    77、【判断题】在触电事故中携带式和移动式电器设备触电事故较多。(  √  )

    78、【判断题】某炼化公司炼油三部裂化系列按停工网络开始温降量,分馏系统也作相应调整,作为装置冲洗油的塔减二线量相应减少。班组按停工方案引外来低氮油(柴油组分)做冲洗油。14时左右,班长王某、外主操俞某、周某一起到置边界处改流程,未按规定进行检查、确认就进行引油操作。在打开边界处两道阀门后,低氮油从第二、第三道阀门之间的放空阀喷出,遇附近高温蒸汽管线起火,王某被烧成重伤。根据上述事实,低氮油从处于开启状态的放空阀门喷出,遇附近裸露的蒸汽阀门、“8”字盲板等高温部位而起火不属于该起事故的间接原因。(  √  )

    79、【判断题】某化工厂大检修前,由某单位安装处在装置东面17m外空地上对新制成的重叠式换热器进行气密性试验。换热器每台有40个螺孔,在试验时换热器B装了13个螺栓,换热器A装了17个螺栓。试压环比原封头法兰厚4.7cm,试压环装上后仍用原螺栓。螺栓与螺母装配时两头不均匀。试压过程中,换热器(B)试压环紧固螺栓拉断,螺母脱落,管束与壳体分离。重4t的管束向前冲出8m,把前方黄河牌载有空气压缩机的汽车大梁撞弯,冲入车底,整台汽车被横推移位2~3m;重2t的壳体向相反方向冲出,与管束分离后飞出38.5m,碰到地桩停止;换热器A、B连接支座螺栓剪断,连接法兰短管拉断,重6t的换热器A受壳体断开短管处喷出气体的反作用推力,整个向东南方向移位8m左右,并转向170°。现场共有9人,4人不幸死亡。根据上述情况,请判断,该厂操作人员严重违反《压力容器安全监察规程》关于“耐压试验和气密试验时,各部位的紧固螺栓必须装配齐全”的规定,导致事故发生。()(  √  )

    80、【判断题】任何单位和个人不得阻挠和干涉对事故的报告和依法调查处理。(  √  )

    81、【判断题】《危险化学品安全管理条例》规定,储存危险化学品的位应当根据本单位具体情况,决定是否建立危险化学品出入库核查、登记制度。(  ×  )

    82、【判断题】任何单位和个人有权对违反本法的行为进行检举和控告。(平台订正:本法指《职业病防治法》)(  √  )

    83、【判断题】化学品安全技术说明书中“泄漏应急处理”是指化学品泄漏后现场可采用的简单有效的应急措施,注意事项以及消除方法。(  √  )

    84、【判断题】把作业场所和工作岗位存在的危险因素如实告知从业人员,会有负面影响,引起恐慌,增加思想负担,不利于安全生产。(  ×  )

    85、【判断题】《中华人民共和国安全生产法》规定,生产经营单位必须投保安生产责任保险。(  ×  )

    86、【判断题】企业涉及使用有毒物品的,除安全生产许可证外,还应当依法取得职业卫生安全许可证。(  √  )

    87、【判断题】当发生危险化学品事故时,现场人员必须根据各自企业制定的事故预案采取积极有效的抑制措施,尽量减少事故蔓延,并向有关部门报告和报警。(  √  )

    88、【判断题】用人单位应当保障职业病病人依法享受国家规定的职业待遇。(  √  )

    89、【判断题】重大危险源的特点是储存物质一般为易燃、易爆、有毒、有害物质,且存储量较大。(  √  )

    90、【判断题】直流电流与交流电流相比,容易摆脱,其室颤电流也比较小,因而,直流电击事故很少。(  ×  )

    91、【判断题】2007年3月27日14时23分,京沈高速公路辽中段610km处,一辆高速行驶的黑色桑塔纳车,撞上前方正在行驶的一辆货运槽车尾部,车上装有24吨丙烯腈,大量的液体喷涌而出,不仅被困者随时都有生命危险,而且数百辆车经过出事路段,附近还有上百名农民正在劳动,情况十分危急。根据上述描述,请判断,事故发生后,有关单位和人员应当妥善保护事故现场以及相关证据,任何单位和个人不得破坏事故现场、毁灭相关证据。(  √  )

    92、【判断题】废弃危险化学品的处置,依照有关环境保护的法律、行政法规和国家有关规定执行。(  √  )

    93、【判断题】直接接触触电与间接接触触电的最主要的区别是发生电击时所触及的带电体是正常运行的带电体还是意外带电的带电体。(  √  )

    94、【判断题】对于油品(特别是甲、乙类液体),不准使用两种不同导电性质的检尺、测温和采样工具进行操作。(  √  )

    95、【判断题】建设项目职业病防护设施建设期间,建设单位应当对其进行经常性的检查,对发现的问题及时进行整改。(  √  )

    96、【判断题】某生产企业为运输方便,自制一个油罐车,罐内用铁板隔开,前段存放汽油,后段存放柴油,在运油中,遇电闪雷鸣,引起储罐燃烧爆炸造成人员伤亡。根据上述描述,请判断,一个储罐可以同时存放两种危险化学品。(  ×  )

    97、【判断题】不同种类毒品、危险程度和灭火方法不同的毒害品可同库混存,性质相抵的禁止可同库混存。()(  ×  )

    98、【判断题】危险化学品生产企业因储罐泄漏造成环境污染和职工轻伤事故不适用于《生产安全事故报告和调查处理条例》。()(  ×  )

    99、【判断题】储存危险化学品建筑采暖的热媒温度不应过高,热水采暖不应超过80℃,也可采用蒸汽采暖和机械采暖。()(  ×  )

    100、【判断题】事故发生单位负责人接到事故报告后,应当立即启动事故相应应急预案,或者采取有效措施,组织抢救,防止事故扩大,减少人员伤亡和财产损失。()(  √  )

    支持全国各地区精准危险化学品生产单位安全生产管理人员考试试题,支持安全资格证,特种作业操作证,职业技能鉴定等工种题库练习。

    展开全文
  • 四相科技产品本产品由四相科技投递并参与“数据猿年度金猿策划活动——2020大数据产业创新服务产品榜单及奖项”评选。大数据产业创新服务媒体——聚焦数据 · 改变商业智慧电厂安全可视化管...

    四相科技产品

    本产品由四相科技投递并参与“数据猿年度金猿策划活动——2020大数据产业创新服务产品榜单及奖项”评选。





    大数据产业创新服务媒体

    ——聚焦数据 · 改变商业


    智慧电厂三维安全可视化管控平台系统是一个综合性的大型应用的有机集成系统,主要包括了各类应用软件、各类人员设备安全管控设备、计算机网络设备等在内多种大型应用子系统。以人员安全与设备安全角度为出发点进行设计,以定位技术与设备状态检测技术为核心,利用网络系统和三维系统实现可视化管理、人员定位、车辆定位、隐患排查、巡检管理等安全方面的全面整合与集成,实现跨系统之间的数据通信和联动响应,达到管理便捷、数据直观、系统安全等目的,助力电力企业建立安全生产可控制、安全建设可控制、日常人员管理可控制的智能化安全生产管理系统。

    应用场景/人群

    用户:面向变电站、发电厂、火电厂、煤电厂等电力系统客户提供服务。

    应用场景:将电厂行业的生产安全、生产效率、设备状态预测与位置物联网技术融合,通过全方位可视化安全管控平台,对电厂安全生产、人员及设备监管、物资运转等进行管理,保障作业人员人身安全及设备运行安全,提升产能效率。

    产品功能

    根据电力系统生产需求定制研发,集多种功能为一体。

     

    三维可视化管理

    利用数字孪生技术,将现实世界映射成虚拟数字世界,将物理世界中看不到的风险、隐患、违规、设备参数全部以数字化技术呈现,为电厂管理员提供直观、透明、精细的数据展现。

     

    人员定位管理

    由定位标签、定位基站及后端管理软件组成人员定位系统,通过该系统与门禁系统、访客管理系统、AI视频系统、安环监测系统、PMS系统中的巡检管理、两票管理、违章管理进行融合,实现对生产作业人员的动态管控、区域统计、轨迹查询、电子围栏、到岗到位等管理。

     

    智能巡检管理、违章管理及隐患排查管理

    将PMS系统中的巡检管理系统与人员定位系统相结合,实现巡检工单派送、巡检人员关联、巡检路径规划、巡检实现提示、重要巡检点说明、巡检误入危险区域提醒、巡检任务执行优良率统计等。如未按规定完成巡检,则通过违章视频抓拍将异常结果自动推送到违章管理系统中。经由审核人员确认违章行为后,将违章结果关联至三维可视化地图中展现,方便后期开展隐患排查工作,全方位保障生产安全。

     

    AI视频监控管理

    利用在电厂内部署的AI摄像头对厂内人员作业及设备安全运行进行监控,通过该系统与门禁、PMS违章管理、人员定位管理、设备运行状态管理等多个子系统进行协同运作,实现人员作业违章行为自动识别、设备故障状态抓拍上报、遇险紧急救援、人员\作业跟踪记录、检修\事故追溯调查等。

     

    电厂设备安全运行态势感知及智能分析管理

    由振动传感器组件、红外探测摄像头、智能采集收发单元、抗干扰通讯网络及服务器等组成系统,通过对底层数据的专业分析实现对发电机、磨煤机、升压站设备、高压开关设备故障研判。再利用大数据系统建立完备的设备故障隐患数据库,通过后期补充最新数据完成数据迭代,实现系统自主完成故障分析与研判、设备隐患自主报警、系统推送完备处理方案,降低电厂停机风险。

    车辆定位防撞管理

    在电厂区域部署定位基站实现人员、车辆的定位,方便调度管理,同时融合防撞功能,弥补特种作业车辆的视觉盲区,杜绝撞人、撞车事故发生,保障作业安全。

    露天煤矿运载车辆管理

    通过北斗/GPS差分定位技术实现运载车辆的定位管理,通过在作业设备上安装高精度定位终端,并将实时精准位置、报警等信息回传到调度中心,实现煤电矿区内外车辆作业的安全经营管理、生产运行、指挥调度、支持保障提供信息数据服务。

    产品优势

    ●全面提升电厂可视化管理

    改善传统安全保障模式,利用可视化管控平台实现实时全面监管,防患于未然。

    ●全面提高电厂设备巡检运维质量

    传统巡检运维准备工作繁琐、环境高危,利用智能巡检系统实现集中式智能化管理,安全便捷

    推进电厂安全管理方式信息化

    传统安全监管方式落后,利用信息化安全管理实现全程自动化监控,告警救援更及时

    协助电厂进行科学的风险预测

    传统管理体系下易形成信息孤岛,联动式系统可以融合多维度数据,全面完善风险预测体系

    ●打造全方位电厂安全生产管理体系

    传统定位技术精度低,无法适应复杂生产环境,利用UWB高精度定位可适应99%以上生产环境,全面提升安全性,细化安全管理区域

    使用客户/人群

    四相科技凭借出色的技术实力和优质的产品服务体系,得到众多客户的肯定。2020年,四相累计与山西忻州广宇煤电、辽宁省国电投本溪热电厂及霍林河坑口电厂等多家电厂签约,成功在电力能源方向形成横向复制之势。

    市场价值

    电力产业是国民经济和民生的基础产业,电力行业的安全稳定,可以为国民经济的稳健增长提供保障。电力系统生产环境危险多,工序复杂,作业人员专业水平层次不齐,导致安全事故多发,容易给生命安全和经济产能都造成重大损失。据统计,电厂生产区内70%以上的生产安全事故的发生都直接与操作者的不安全行为有关。

    采用三维安全可视化管控平台管理电厂,可以有效降低安全事故发生率、优化工序流程提高生产效率,给电力系统降本增效的同时,全面保障生产安全, 减少因事故造成的经济损失。

    提示:直接点击文末左下角“阅读原文”链接可直达该产品官网页面

    产品所属企业·四相科技:

    四相科技——专注于位置服务的物联网领域国家高新技术企业,公司立足位置信息服务,链接物联网智慧生态圈,以位置感知连接和aPaaS服务平台为基础,为合作伙伴提供集硬件、软件、算法的一站式位置服务,涵盖了从产品设计、研发、集成、生产、制造、销售及售后服务全过程。

    目前,四相科技已为工业制造、电力能源、石油化工、公检法司、智慧康养、仓储物流、数字机房等领域提供了包括硬件研发与生产、平台开发与部署、系统集成等整体解决方案,产品及服务覆盖中国大陆、港澳台、新加坡、欧盟、北美等全球多个国家和地区,综合运用大数据分析、物联网传感、人工智能等技术,助力政企客户实现安全、高效、智能的生产与管理,为物联网行业发展赋能。

    截止目前,四相已完成1200+的真实场景实现位置信息的智慧物联,并打造出一汽大众、京东方、宝钢、鞍钢、紫金矿业等多家龙头标杆项目。

    —— / END / ——

    以下内容更精彩


    2020年度产业图谱:

     2020中国数据智能产业图谱1.0版

     从产业图谱看中国2020年数据智能行业的发展态势

    2020数据猿《#榜样的力量#寻找新冠战“疫”,中国数据智能产业先锋力量》大型公益主题策划活动:

    ●《新冠战“疫”——中国数据智能产业最具社会责任感企业》榜

    ●《看过大佬们发的朋友圈之后,我相信:明天会更好,明年定会春暖花开》条漫

    2019数据猿年度金猿榜:

    2019大数据产业趋势人物榜TOP 10

    ●2019大数据产业创新服务企业榜TOP 15

    ●2019大数据产业创新服务产品榜TOP 40

    展开全文
  • 危险化学品安全生产安全生产工作的重中之重。 1、现状分析 1)生产过程安全隐患多,事故易发多发 危化产品生产经营过程中70%以上都具有易燃、易爆、易中毒、易腐蚀的特点。一旦经营者在生产过程中出现纰漏,...
  • 安全生产模拟考试一点通:危险化学品生产单位安全生产管理人员模拟考试参考答案及危险化学品生产单位安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品生产单位安全生产管理人员操作证已考...
  • 可以发现,A2PT等攻击组织的攻击活动中,恶意代码并不是唯一的J火武器,实际上它们把大量相关的外设、中继、电池、声像传统的JD设备与网络恶意代码结合,从而形成覆盖人力、网络的频谱的作业能力。 .普通APT组织...
  • 6月25日,国内知名的系统高可用专家数列科技宣布开源旗下核心产品能力,对外开放生产全链路压测平台产品的源代码,并正式命名为Takin。目前中国人寿、顺丰科技、希音、中通快递、中国移动、永辉...
  • 安全生产模拟考试一点通每月更新安全员-C证-专职安全生产管理人员(广东省)理论考试题目及答案!多做几遍,其实通过安全员-C证-专职安全生产管理人员(广东省)在线考试很简单。 1、【单选题】违反《中华人民...
  • 安全生产模拟考试一点通每月更新危险化学品生产单位安全生产管理人员复审考试题目及答案!多做几遍,其实通过危险化学品生产单位安全生产管理人员很简单。 1、【单选题】《易制毒化学品管理条例》规定,易制毒...
  • 4 中英文最的网络安全术语表 按字母 A-Z 顺序排列,用简单的中英文解释,让你了解到最的网络安全术语。 4.1 A 4.1.1 高级持久威胁(APT) 一种网络攻击,使用复杂的技术持续对目标政府和公司进行网络间谍活动或...
  • 工地现场人员数量多、流动性大,监管不到位易导致违规操作多发,偷盗、纠纷、打架斗殴、玩忽职守等干预不及时,往往引起安全事故,事后追溯调查取证难。 3)安全事故频发 施工作业属于高风险,工地现场人、车、物...
  • 更新背景 目的 最近笔者对于超大型企业的混合云安全...笔者依然看到了国外AWS、Azure、Google给超大型企业的超完整解决方案,笔者也会借此机会找出AAG这家给这些超大型企业提供的优秀的完整安全解决方案、提供.
  • 针对汽车安全气囊DAB系统,虽然在生产过程中能够实现方位的产品追溯、检测产品质量和后期产品处理,但是仍然存在如下问题: 在生产过程中无法及时发现并采取及时的应对措施,严重影响生产周期; 数据采集不准确...
  • 安全生产模拟考试一点通:2021年危险化学品生产单位安全生产管理人员考试为正在备考危险化学品生产单位安全生产管理人员操作证的学员准备的理论考试专题,每月更新的危险化学品生产单位安全生产管理人员报名考试祝...
  • 该篇是2021年发表在《Future Generation Computer Systems》期刊上的一篇综述论文,主要介绍了联邦学习中可能面对的所有安全与隐私威胁问题,比较详细和具体的进行了综述,是篇还不错的文章,建议读原文。...
  • 危险化学品生产单位安全生产管理人员考试题参考答案及危险化学品生产单位安全生产管理人员考试试题解析是安全生产模拟考试一点通题库老师及危险化学品生产单位安全生产管理人员操作证已考过的学员汇总,相对有效帮助...
  • 安全体系建设-基础安全

    千次阅读 2021-11-30 21:55:08
    安全体系的建设需要进行分级,粗略的分为以下三个层级。 基础安全 第一阶段大部分公司关注的层级,充当应急的角色,在不断的应急中了解公司的架构、业务情况,并再次基础上建立安全防御体系,也是给企业打好基础的...
  • 开工大吉大吉大利结束了美好祥和的春节假期,经受了各路亲戚的“灵魂拷问”,扛住了花钱如流水的压力,大家顺利回到工作岗位上。在这里,要对乐平镇市民说一声:开工大吉!...☞一是要广泛开展一次安全生产...
  • 众所周知,网络、信息系统和数据的安全与传统意义的生产安全一样,是一场没有尽头的旅程,绝没有“一蹴而就、一劳永逸”的说法。组织单位所能做到的便是持续完善安全机制、强化安全意识,用不断的资源投入、行动和...
  • 与此同时,数据量加大,网络攻击日趋频繁,对企业来说,包括云计算安全在内的网络安全部署的重要性日益显现。 但是,企业部署云安全产品之前,除了要考虑等保和关保的要求之外,更要考虑在数据量和数据价值重要性...
  • 云原生的火热带来了企业基础设施和应用架构等技术层面的革新,在云原生的大势所趋下,越来越多的企业选择拥抱云原生,在 CNCF 2020 年度的调研报告中,已经有83% 的组织在生产环境中选择 Kubernetes,容器已经成为...
  • 项目甲方:邯郸市裕泰化工集团有限公司 项目地点:河北磁县煤化工产业园区裕泰化工集团 项目开始时间:2021年7月 ...2020年10月10日,国家工信部和应急管理部联合下发的《“工业互联网+安全生产”行动计划(2021-202
  • 看了前两篇你肯定已经理解了 java 并发编程的低层构建。...阻塞队列对于许多线程问题,都可以使用一或多队列来安全、优雅的进行数据的传递。比如经典的生产者--消费者问题,生产者不停的生成某些数据,消费...
  • PCI DSS数据安全测评旨在促进并增强持卡人账户数据安全,为保护帐户数据的技术和操作要求提供了一基准,便于统一的数据安全措施在全球范围内的广泛应用。PCI DSS 适用于参与支付卡处理的所有实体——包括商户、...
  • 安全安全隐患排查实施方案一根据区卫生局江卫通【20**】9号关于印发《江城区卫生系统安全隐患排查治理体系建设实施方案》的通知的精神,为全面推进农场医院安全隐患排查治理体系建设,结合我院安全生产实际,特制定...
  • 化工安全要点

    千次阅读 2021-11-10 10:50:46
    第一条 积极参加各项安全活动,努力学习安全技术知识,严格遵守各项安全生产规章制度,强化自我保护意识、提高安全技能,做到“不伤害”,即:不伤害别人,不伤害自己,不被别人伤害。 第二条 必须按规定着装上岗...
  • 网络安全服务与管理

    2021-10-28 09:37:41
    ——要重点保护基础信息网络和关系国家安全、经济命脉、社会稳定等方面的重要信息系统,抓紧建立信息安全等级保护制度,制定信息安全等级保护的管理办法和技术指南。 2007年 公通字《信息安全等级保护管理办法》 ...
  • 金融业的数字化转型引发持续关注。... 金融业的数字化转型过程大致分为三个阶段:最初,金融业从长尾用户切入,利用互联网优势,逐步打开市场。其后,更多新技术应用到更多金融场景之中,数据智能转型加

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,641
精华内容 15,056
关键字:

安全生产三个全覆盖