Answers:
有点儿。免责声明:我是安全人员;)
因此,我的工作方式就是拥有威胁模型,该模型描述了可能由哪种攻击者进行的攻击。这有助于确定安全性要求。当我实际进行编码时,我会执行通常的“安全编码”操作,例如要小心,确保游标变量始终在范围之内,清理污染的输入,处理错误条件。然后,我返回到威胁模型,以查看哪些模块最有可能成为攻击者的目标。那些得到一些额外的评论。
我使用行业标准的做法,例如使用SQL参数。我使用.NET Framework等“安全”平台,并利用ASP.NET MVC中的安全功能(如防伪令牌)。我没有编写自己的加密算法,但是我确实了解这些加密提供了哪些安全益处,以及何时需要使用它们来获得这些安全益处。
简而言之,我使用最佳做法,但是我没有开发自己的安全工具。在这方面,我不是安全专家;我依赖其他安全专家,他们大概已经对这些问题进行了深思熟虑,并对风险和收益有清晰的了解。
除了简单地使用安全工具之外,我对安全性的基本方法是消除系统中所有可能的输入,除了我所期望的。如果我有一个社会保险号字段,那么实际上应该显示的唯一字符是数字和破折号(以特定的模式)。
我在客户端和服务器上都验证用户输入。
绝对。
安全就是一切。而使用数值软件,它可以执行两次。
就在前一天,一个用户设法找到并利用了我的一个旧程序中的错误。损害是无法弥补的。见下文:
它曾经是圆形的。
了解安全性的一般原理(完整性,身份验证,授权),然后阅读几本关于人们如何颠覆这些安全性支柱几千年的书,而您将到达一半。
然后阅读一些有关设计和测试策略的好书,您将学习如何将可测试性设计到您的体系结构中。
现在我们到了考虑安全性的地步。我正在考虑如何验证数据源,如果数据被篡改不重要,数据源是谁,我对此有多确定?怎么会改变等等...
这会影响设计。配置文件可能已加密了关键部分,或者特定字段可能是带有关联签名字段的明文形式。面对互联网的服务会使事情变得更加复杂,因为您应该期望那里的敌对程度更高。
然后在测试时,如何测试所有这些。最大数据输入是多少,如果将软件推超出这些限制,会发生什么情况,软件将如何处理?它信任什么?您如何伪造这种信任?
它应该是任何开发人员从头开始或多或少从根本上构建到流程中的东西,具体取决于应用程序等。不幸的是,由于开发人员不倾向于引用安全性,因此购买者不倾向于考虑它(我知道,这有点赶不上22,因为如果买家想要最便宜的报价,则可能不包括担保)
作为开发人员,如果您精通此领域,则可以获得绝对的优势-我特别在考虑银行和金融服务,但其他行业也适用。目前,他们可能会预算70至10万美元的培训费用来培养一名应届毕业生,以加快该组织的流程,安全性和其他细节。如果您可以将其中的30k保存下来,那将是一个不错的简历!
在英国,信息安全专业人员协会和在苏格兰,安全与网络犯罪卓越中心正在与大学紧密合作,以帮助审查课程资料,提供有关编码不良对现实世界的影响的客座讲座,并为暑期实习提供方便(例如软件开发人员被置于执法部门的欺诈部门。)大多数支持组织都是免费这样做的,因为它有可能为他们节省大量金钱-对我来说听起来很有价值。
(免责声明-我曾担任各种全球组织的安全负责人)