来自 安全 2021-06-10 19:14 的文章

服务器高防_免备案高防_快速接入

服务器高防_免备案高防_快速接入

ImmuniWeb>安全博客应用程序开发人员应该了解哪些安全编码和主动安全性?OWASP 10大主动控制-第1部分4.3k 186 8 15更多5 6 15星期四,2018年4月26日,星期四,应用程序安全系列阅读时间:5分钟。如何有效地教你的开发人员安全编码?了解更多信息下面。如果您从事应用程序安全,您可能已经听说过OWASP和OWASP Top 10,cc攻击防御原理,其中列出了web应用程序中最严重的10个漏洞。经过社区的一些修改和评论,它的最新版本于2017年发布。但是当谈到教开发人员如何编写安全代码的基本原则时,还有另一个OWASP项目是最好的选择:OWASP十大主动控制。该项目创建于2014年,最新版本是2016年,由OWASP的知名应用程序安全专业人士创建,他们对安全编码有非常深入的了解。这里简要介绍了为什么这个项目被创建:"软件开发者是任何应用的基础。为了实现安全的软件,开发人员必须得到他们编写代码的组织的支持和帮助。当软件开发人员编写构成web应用程序的代码时,他们需要接受和实践各种各样的安全编码技术。web应用程序的所有层、用户界面、业务逻辑、控制器、数据库代码等等,都需要在开发时考虑到安全性。这可能是一项非常困难的任务,开发人员往往会失败。大多数开发人员在学校没有学习过安全编码或加密。"—OWASP主动控制作为OWASP前10名,主动控制按重要性排序,这意味着第一个控制比第二个更重要,依此类推。让我们来满足这些控制:尽早验证安全性并经常参数化查询编码数据验证所有输入实现身份和身份验证控制实施适当的访问控制保护数据实现日志记录和入侵检测利用安全框架和库错误和异常处理一组与它们相关的信息,例如它们的描述,它们的目标是防止哪些漏洞,关于为什么或如何应用它们的一些参考资料,以及可以用来执行这些操作的工具。现在我们将详细讨论前五个控件,以及如何将它们应用到任何需要的项目中。C1-尽早验证安全性这是第一个也是最重要的控件,它告诉我们很多关于我在上一篇文章中提到的关于DevSecOps的内容,以及如何在开发过程中集成安全性。根据这个控制,在许多组织中,安全性仍然被视为一个插件,可以在软件准备好之后添加。我们都知道这个过程已经不起作用了,因为它是非常缓慢和昂贵的,导致项目延误和成本增加。安全性测试必须在开发生命周期内进行,并且应该在开发过程中执行,网吧电信ddos防御,否则发现的问题很少会得到解决,除非这些问题对项目的前进是关键和阻碍的。对于penters和应用程序安全专业人员来说,测试系统和应用程序是非常常见的,在六个月或一年后,当他们再次测试相同的系统时,几乎所有以前发现的漏洞仍然存在。这种情况通常会发生,因为当这些测试被执行时,它们是独立的,并且是在项目范围之外完成的,所以要解决这些问题,通常需要创建一个新的项目,分配人员、时间和资金,并计划更改来执行这些修复,这需要时间,尤其是在大公司中,您必须处理很多来自不同地区的人。因此,此控件的主要目标是尽早建立软件的安全需求,并创建方法来验证这些需求是否在项目期间得到满足,安全宝防御cc,如果没有,则报告它们,以便它们能够尽快得到修复,至少在下一个sprint(如果使用敏捷的话)。TDD、CI/CD和连续测试等技术可以帮助您以更有效的方式实现这种控制。C2-参数化查询虽然已经有20多年的历史了,但SQL注入仍然是web应用程序中最大的问题之一。由于它们影响到web应用程序的核心,即数据库,因此非常危险,是许多攻击的根本原因。而且,由于现在有很多免费工具,所以它们很容易被利用,所以大多数时候它们不需要攻击者的高级专业知识。最大的问题是当SQL查询中的命令中的参数错误时,用户可以控制在数据库中执行的内容,从而能够检索、更改或删除数据。因此,为了避免创建一种称为查询参数化的技术来将SQL命令与输入参数分开,避免一个命令影响另一个。让我们检查一个带有SQL注入的易受攻击代码的基本示例,以及一个通过参数化查询修复的示例:•易受攻击的代码:String query="SELECT*FROM users WHERE userID='"+请求.getParameter("id")+"'";•固定代码:int id=整数.parseInt(请求.getParameter("id");准备报表pstmt=准备陈述("从userID=?"的用户中选择*);pstmt.setInt(1,id);注意到区别了吗?这种简单的技术和准备好的语句可以避免代码中的SQL注入漏洞。那么,我们如何在web应用程序上不断地发现这个问题,直到今天?利用XKCD C3中的Mom编码数据数据编码是另一种很好的技术,可以避免其他类型的注入攻击,如XML和LDAP注入,以及带有输出编码的XSS。这种方法避免了一些特殊字符被认为对解释器是危险的。降低输入作为代码或网页的一部分的风险,这与我们前面提到的SQL注入非常相似。有很多种编码方式,这都取决于您试图对数据进行编码的原因。例如:命令编码、LDAP编码、XML编码和HTML编码。还有一些编程语言和框架已经有了他们的编码器,你所要做的就是激活它或者导入他们的库来使用它们。C4-验证所有输入始终认为应用程序上的任何输入都是不可信的!在你的软件上任何地方使用它之前,一定要确认这些。即使它们来自另一个你知道或信任的应用程序。它们可能是易受攻击的,并影响您的应用程序。确保开发人员通过语法和语义验证检查数据。语法意味着数据是正确的格式,语义意味着数据对应用程序有一定的意义。还要确保在服务器端执行这些验证,因为客户端验证很容易被绕过。另一件要考虑的事情是始终执行白名单而不是黑名单,也就是说,只允许或接受被认为有效的输入,其他任何输入都是无效的。您可以使用正则表达式来帮助您实现这一点,并拥有更精确的验证过程。C5-实现身份和身份验证控制人们经常将身份验证错误地识别,有时也会将身份验证与授权相混淆。我们先把它弄清楚。识别是识别某人的过程,例如使用用户名。身份验证是通过提供密码并确保密码与数据库中的密码相匹配来证明该用户是他所说的真实身份的过程。这就是身份和身份验证控制对应用程序非常重要的原因。此控件不仅限于此,还提供有关会话和身份管理以及双因素身份验证的信息。除了安全行业的一些人之外,大多数普通用户倾向于在他们的应用程序中使用非常弱的密码,有时甚至在多个位置使用相同的密码。由于这一点以及多年来发生的许多数据库泄漏,人们决定创建一种称为双因素身份验证(2FA)的机制,有时也称为多因素身份验证(multiple factor authentication,MFA)。也就是说,在您提供用户名和密码以登录到应用程序之后,您还必须提供我们称之为一次性密码(OTP)或令牌,它会随着时间的推移而变化。这些通常是通过手机上的特定应用程序(如googleauthenticator)获得的。许多网站和应用程序已经使用这种机制,cc防御报价,但不幸的是只有少数人知道并使用它。谷歌、Facebook、Twitter、Linkedin等许多服务已经支持2FA。还有一些网站列出了所有支持这种强身份验证机制的应用程序,ddos防御硬件,比如双因素认证(2FA)。在下一篇文章中,我们将讨论OWASP的其他五个主动控制。确保您的开发人员在下周之前阅读并理解这些控件。别忘了查看我们的免费应用程序发现服务,确保您开始主动保护您的应用程序!应用程序开发人员如何构建安全可靠的代码?OWASP前10个主动式控件-第2部分函数getSelectionHtml(){var html="";if(typeof窗口.getSelection!="未定义"){var sel=窗口.getSelection();如果(选择范围计数){var容器=文档.createElement("div");对于(var i=0,len=选择范围计数;i