文章目录

十大最关键的 web网页开发程序安全风险_宁波网页开发
数字安全是一项严肃的业务。一次违规可能会导致数百万美元的损失,并在未来几年损害公司的声誉。网页开发
然而,由于影响 Web 应用程序网页开发安全性的因素有数千种,因此在开发过程中决定重点关注哪些方面有时具有挑战性。
幸运的是,Web 应用程序的绝大多数安全威胁都是由少数常见问题引起的。OWASP 十大是这些缺陷的动态排名,会定期更新以应对新的威胁。
开发人员可以将其用作检查表,以涵盖应用程序安全的基本要素。继续阅读 OWASP 前十名的解释以及避免每一个的一些指导。
风险上升
数据泄露达到了极高的水平。2017 年的数据泄露数量和严重程度都创下了新记录,在 5,207 次数据泄露事件中,有 78.9 亿条记录遭到破坏。
其中约 69% 是由于技术或人为错误而不是恶意行为者造成的。
错误配置的服务、错误的备份、未能更新软件和其他错误使应用程序容易受到意外破坏或故意攻击。
违规的后果是毁灭性的。一次数据泄露的平均成本从 220 万美元到 690 万美元不等,大型泄露事件达到 40-3.5 亿美元。
由于风险如此之高,公司应该采取预防措施,在最常见的安全问题导致灾难之前解决它们。
什么是 OWASP?
开放 Web 应用程序安全项目 (OWASP) 是一个致力于提高软件安全性的国际非营利组织。
它作为支持创建、购买和维护值得信赖的应用程序和 API 的资源。
OWASP 不认可特定的商业产品。相反,它识别威胁,建立安全最佳实践,并为构建更好的软件提供指南和工具。
对抗 OWASP 前十名
注射
当恶意外部代码伪装成命令或查询的一部分时,就会发生注入漏洞。
解释器“识别”它并允许访问软件的内部功能,它可以绕过系统边界、复制或操作数据,并执行任意数量的未经授权的操作。
有几种类型的注入缺陷,包括 SQL、NoSQL、OS 和 LDAP 注入。
通过使用适当的函数和 API 来帮助清理数据并提高安全性,从而降低注入漏洞的风险。
根据软件的用途,限制文件上传的类型和大小会增加另一层保护。
身份验证损坏
身份验证和会话管理是抵御外部影响的两个最有用的防御措施,但它们的实施往往不均衡。会话 ID 在 URL 中公开或在登录后不会轮换。
密码没有经过哈希处理和加盐处理。没有设置默认应用程序超时来防止忘记注销共享计算机的用户。
攻击者可以利用这些弱点冒充授权用户并获得访问权限。
在测试期间,请务必检查并仔细检查身份验证功能。使用多因素身份验证也是一个好主意。
敏感数据暴露
保护财务数据、健康记录和个人身份信息 (PII) 等敏感数据是一项特殊责任。
数量惊人的应用程序和 API 没有采取必要的步骤来掩盖这些数据。它以明文形式未加密存储,很容易被截获。有时数据在检索时会自动解密,当与注入缺陷配对时,可以很容易地在系统外复制和粘贴。
数据主体面临非常真实的身份盗窃风险。
为敏感数据提供额外保护,例如静态或传输中的加密。在与浏览器交换此类数据时也要采取更多预防措施。
XML 外部实体 (XXE)
这种不断上升的威胁来自 XML,这是一种允许不同应用程序访问共享数据的有用工具。可以将外部实体引用引入 XML 文档,其中过时或配置错误的处理器将其视为合法的。
XXE 为广泛的利用打开了大门:发起拒绝服务攻击、访问和共享内部文件、扫描内部系统,甚至执行远程代码。
XXE 需要由熟练的开发人员解决。较旧的 XML 处理器往往存在很多漏洞,因此需要定期修补和更新。
尽可能使用不太复杂的数据形式(如 JSON)。避免敏感数据的序列化。
考虑实施积极的服务器端输入验证(或白名单)以及清理以检测和避免 XML 文档、标题或节点中的恶意数据。
损坏的访问控制
根据内部结构和他们的需求,应该限制授权用户可以做什么。但是,这些限制并不总是由系统强制执行。
这为攻击者提供了访问较低级别身份验证的机会,并利用这些漏洞获取敏感数据、修改访问权限,甚至创建自己的帐户作为系统的长期入口点。
制定“默认拒绝”政策,除非另有说明,否则用户始终被限制使用某项功能。使用标记所有权的访问控制,而不是简单地接受添加、更改或删除记录的权利。
这样可以更轻松地判断谁的帐户遭到破坏,并防范内部安全威胁。
最后,确保正确记录和监控登录失败,以便及早发现潜在威胁。
安全配置错误
这个类别涵盖了很多技术领域,所以它是最常见的问题也就不足为奇了。
开发人员保留弱默认配置、忘记步骤或使用快捷方式、配置不当的 HTTP 标头、错误处理开放云存储或在错误消息中提供敏感信息。
像这样的错误通常是由于进度压力或对工具不熟悉造成的。
安全配置错误的最佳补救措施是在发布期间和发布后强调对细节的关注。确保所有操作系统、框架、库和应用程序都已安全配置。
建立一个系统来及时修补和升级(尤其是在意识到堆栈中的漏洞之后)。
使用自动化工具 来验证不同环境中的安全设置。让团队成员在可能的情况下相互检查,也可以提供一个尽早发现错误的机会。
跨站脚本
当攻击者可以将不受信任的数据引入新网页并作为该页面访问者的陷阱时,就会发生跨站点脚本 (XSS)。
不能确保正确验证或转义的应用程序容易受到 XSS 缺陷的影响,那些使用能够创建 HTML 或 JavaScript 的浏览器 API 来使用用户提供的数据更新网页的应用程序也是如此。
攻击者使用 XSS 插入脚本,这些脚本被受害者的浏览器视为代码。
然后,他们可以在 Web 应用程序中添加“数字涂鸦”,将用户重定向到他们选择的站点(通常是为了获取 PII 或财务数据),甚至直接劫持用户会话。
一些开发人员将 XSS 缺陷视为用户问题,但如果它源于公司的易受攻击的 Web 应用程序,他们仍然对其影响负责。
考虑通过设计避免 XSS 的框架(例如 ReactJS)。如果这不是一个选项,请针对特定于框架的 XSS 漏洞实施控制。
不安全的反序列化
不安全的反序列化允许攻击者使用序列化对象传输恶意负载。
它经常导致远程代码执行,即使没有序列化也可以用来执行代码注入攻击、重放攻击、权限提升攻击等攻击。
永远不要接受来自不受信任来源的序列化对象。使用只允许原始数据类型的序列化媒体。
开发人员还应该进行完整性检查,包括对序列化对象进行数字签名,以防止恶意对象创建或数据篡改。
使用存在已知漏洞的组件
库、框架和其他软件模块之类的软件组件必须与受支持的应用程序具有相同的权限。
如果它们存在安全漏洞,则使用它构建的每个软件都可以继承该漏洞。外部参与者利用已知漏洞窃取数据或完全控制服务器。
更新和补丁计划松懈的公司可能需要数周甚至数月的时间才能识别出已知的缺陷,这使他们在此期间容易受到攻击。
掌握堆栈组件。实施旨在清点组件和依赖项的持续流程,包括有关组件上次更新时间的注释。
如果某个组件不再使用,请将其删除以避免不受支持的工具造成漏洞。在可用时订阅安全警报,并始终使用安全连接来下载组件。
养成监控常见漏洞和披露(CVE) 和国家漏洞数据库 (NVD)等资源的习惯,以了解堆栈组件中新发现的漏洞。
自动化可以帮助避免此过程中的人为错误或疏忽。
记录和监控不足
一家公司平均需要 200 多天才能意识到他们存在软件漏洞。即便如此,违规行为通常也会被外部来源检测到。
检测滞后是由于日志记录和监控不足以及事件响应协议薄弱造成的,一旦违规行为曝光后反应迟缓。
攻击者有足够的时间来逃避检测、删除任何可能让调查人员识别他们的东西、篡改数据,甚至转移到其他系统。
实现所有登录、访问控制和服务器端输入验证失败的自动日志记录,包括足够的用户上下文以确定失败是否可能可疑。
将日志保留足够长的时间,以便根据需要执行取证分析。日志本身应该以易于使用的格式生成。
值得检查的是,高价值交易也有审计跟踪和完整性控制。
一盎司的预防…
贯穿这些解决方案的一个共同主题是意识和预防。当开发人员意识到风险时,他们可以提前采取措施来避免或减轻灾难。
这不是偷工减料的地方。毕竟,在这里花费的时间和金钱可以防止违规后数百万的损失。