我目前正在完成编程的大学学位,我发现学生和老师通常都几乎不理解安全主题。这让我觉得有很多开发人员几乎没有关于安全的基本知识。我最终将与这些开发人员一起工作,但我对作为一名程序员如何帮助他们了解安全问题并让他们了解安全问题有点不知所措。有哪些好的方法以及要避免的事情是什么?
如何让我的程序员同事了解安全问题?
如果您与这些开发人员一起处理编码任务或其他项目,您可能会在合作时提出安全问题。如果您以这种方式工作,那可能是在“结对编程”期间,也可能是代码审查的一部分。
如果您选择这种方法,您需要根据实际威胁提出现实问题。如果您提到攻击的所有偏执可能性,那么您很可能只会惹恼人们而无法有效地传达您的信息。即使当我为安全供应商工作时,我也发现偏执狂令人沮丧。
在我的职业生涯中,我曾在非常以开发为中心的环境中工作过,并且可以确认“大多数”开发人员总是会走最短的路线来取得胜利,并尽可能走捷径,除非它会导致代码执行缓慢。通常,安全问题根本不会引起关注。
对此没有正确或错误的答案,因为每个开发人员/开发组都有不同的动态并以不同的方式做出响应。也就是说,您可以做一些事情,例如:
投资一些内部安全编码培训。大多数主要的 PenTest 公司都将提供此服务作为一项服务,他们将派出他们最聪明和最优秀的人来与您的开发人员一起工作几天,让他们经历不逃避字符和不检查缓冲区的危险: ) 这是一个很好的起点,因为它至少让他们开始考虑他们的方式的错误,但它不应该是孤立的或一次性的活动。
接下来,您可能想尝试运行一些内部捕获标志/黑客盛会,让他们都在攻击和防御能力中工作,真正开始解决他们无意中制造的问题。免费啤酒和比萨通常有助于推动这些会议:)
在那之后,对我来说,等式的下一步是为他们提供所需的工具和智能,以便在他们进行时从源头上解决这些问题。大多数 Pen Test 精品店会告诉您,唯一应该/可以进行代码分析的人是经过培训且具有多年经验的 Pen Tester。当然,这是一个基于销售的谎言。这是有道理的,就像一个经验丰富的源代码审阅者在寻找错误时可以比普通开发人员更有效地浏览数千行代码,但如果开发人员在编写代码时确实这样做了怎么办? 在这种情况下,开发人员将比渗透测试人员更有效率,这就是开始产生回报的地方。本质上,获取一堆免费的源代码审查工具,例如 AppCodeScan、Checkstyle、Hammurapi、JCR (Java Code Reviewer) o2 OWASP,然后让他们成为开发人员构建的一部分,并给他们时间来跟上他们的速度。如果您的开发人员可以在编译之前将他们编写的最新功能或重大更改放入上述快速而肮脏的工具中,并获得一些会导致问题的线索,他们可以快速修复它,预发布, pre alpha 甚至。
对我来说,等式的最后一部分是,发布前和发布后的渗透测试必须将结果反馈到开发周期中,这样开发人员才能看到他们造成的问题并制定策略来停止重复违规。听起来很简单,但经常被忽视!
正如我在开始时所说的,这里没有正确或错误的答案,但希望以上内容可以给你一两个想法,让你去玩。
我建议找到类似OWASP的本地章节之类的东西,或者类似的东西。
参加他们的月度会议(或任何时候),并带上你的同事。
即使有些讲座可能不相关,它也会将安全感带到他们的脑海中,并让他们思考。通常,您也会获得一些非常棒的内容。