
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
软件开发安全管理是每一位软件开发程序员都需要重点关注的一个技术问题,而本文我们就通过案例分析来简单了解一下,软件开发安全管理都有哪些问题。
1.注入
将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。
如何防止:
防止注入漏洞需要将数据与命令语句、查询语句分隔开来。
佳选择是使用安全的API,完全避免使用解释器,或提供参数化界面的接口,或迁移到ORM或实体框架。
使用正确的或“白名单”的具有恰当规范化的输入验证方法同样会有助于防止注入攻击,但这不是一个完整的防御,因为许多应用程序在输入中需要特殊字符,例如文本区域或移动应用程序的API。
对于任何剩余的动态查询,可以使用该解释器的特定转义语法转义特殊字符。OWASP的JavaEncoder和类似的库提供了这样的转义例程。
在查询中使用LIMIT和其他SQL控件,以防止在SQL注入时大量地泄露记录。
2.失效的身份认证
通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。
如何防止:
在可能的情况下,实现多因素身份验证,以防止自动、凭证填充、暴力破解和被盗凭据再利用攻击。
不要使用发送或部署默认的凭证,特别是管理员用户。
执行弱密码检查,例如测试新或变更的密码,以纠正“排名前10000个弱密码”列表。
修改密码复杂度策略,密码由大/小写字母+特殊字符+数字组成,长度大于8位,定期90天修改密码。
确认注册、凭据恢复和API路径,通过对所有输出结果使用相同的消息,用以抵御账户枚举攻击。
限制或逐渐延迟失败的登录尝试。记录所有失败信息并在凭据填充、暴力破解或其他攻击被检测时提醒管理员。
使用服务器端安全的内置会话管理器,在登录后生成高度复杂的新随机会话ID。会话ID不能在URL中,可以安全地存储和当登出、闲置、绝对超时后使其失效。
3.敏感数据泄露
许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。
如何防止:
对系统处理、存储或传输的数据分类,并根据分类进行访问控制。
熟悉与敏感数据保护相关的法律和条例,并根据每项法规要求保护敏感数据。
对于没必要存放的、重要的敏感数据,应当尽快清除,或者通过PCIDSS标记或拦截。未存储的数据不能被窃取。
确保存储的所有敏感数据被加密。
确保使用了新的、强大的标准算法或密码、参数、协议和密匙,并且密钥管理到位。
确保传输过程中的数据被加密,如:使用TLS。确保数据加密被强制执行,如:使用HTTP严格安全传输协议(HSTS)。
禁止缓存对包含敏感数据的响应。
确保使用密码专用算法存储密码,如:Argon2、scrypt、bcrypt或者PBKDF2。将工作因素(延迟因素)设置在可接受范围。
单独验证每个安全配置项的有效性。
4.XML外部实体(XXE)
当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙,就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据。许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。
如何防止:
尽可能使用简单的数据格式(如:JSON),避免对敏感数据进行序列化。
及时修复或更新应用程序或底层操作系统使用的所有XML处理器和库。同时,通过依赖项检测,将SOAP更新到1.2版本或更高版本。
在应用程序的所有XML解析器中禁用XML外部实体和DTD进程。
在服务器端实施积极的(“白名单”)输入验证、过滤和清理,以防止在XML文档、标题或节点中出现恶意数据。
验证XML或XSL文件上传功能是否使用XSD验证或其他类似验证方法来验证上传的XML文件。
尽管在许多集成环境中,手动代码审查是大型、复杂应用程序的佳选择,但是SAST工具可以检测源代码中的XXE漏洞。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。