保护您的代码:17个开发者安全提示

网上的恐怖故事越来越糟。首先是一些信用卡号码被盗。当时只有几千人。现在,我们听说数以百万计的财务记录因安全漏洞而暴露,我们对潜在的威胁变得麻木了。信用卡号码仅仅触及了坏人想要的东西的表面,还有更多来自研究网络战的实验室的危险故事。

[安全相关:2012年最差安全混战]

编写安全代码在形成第一个循环之前就已经开始了——这不是一项简单的任务。即使是近似防弹代码,架构师、工程师、审计员和管理人员也必须尝试想象代码的每个方面可能出现的所有问题。虽然不可能预测攻击者将抛出的每一个讨厌的曲线,但您必须尽您所能减少攻击面,堵塞漏洞,并防止潜在漏洞的影响。

这里有17个提示可以生成更安全的代码。这个清单还远远不够,但它应该能让你更接近你的目标。请在下面的评论中分享您对开发安全代码的见解。我们都受益于更大的安全。

安全编程技巧1:严格测试输入

攻击者需要进入您的计算机的路径,而最简单的路径是通过代码打开的门。如果你的软件从互联网上获取信息,有人会试图偷偷地从你身边溜走。

典型的例子是懒惰的C程序员创建的缓冲区溢出,他们接受任何字符串,直到该字符串达到数字0(最后一个字符的官方C符号)为止。攻击者很久以前就发现,他们可以发送任意长的数据包,并写入编程堆栈和内存,只要他们不发送终止0。如果他们对自己写的东西很聪明,他们就能控制并重写任何东西。

对门户开放的另一种经典攻击是SQL注入。该Web表单可能只要求您的邮政编码,然后忠实地将这几个字符粘贴到SQL查询中,但是聪明的黑客开始添加额外的字符,从而扩展了范围,使其不仅仅是一个简单的搜索。当软件轻松地获取所有输入时,它最终直接将SQL输入到数据库中。

解决的办法是测试输入数据的规模和结构,而且从来不曾相信在互联网上的另一端的人。

通常,程序员希望提供更多的灵活性和更少的强制。对软件来说,检查每一个数据都是很耗时间的,对程序员来说也是很累人的。像XML和JSON这样的数据传输语言并不能确保数据避免这些问题。但是检查是程序员需要做的来保护他们的代码。

安全编程技巧2:存储你需要的东西,不要多存一分

之前你问你的客户的蜗牛邮件地址,问问自己,你是否能送他们通过邮局物理信。如果邮件是足够的信件,你可能要重新考虑存储的家庭或企业地址。这信息费的时间过程中,占用的磁盘空间,并使得一个有吸引力的目标信息窃贼。

程序员们经常像强迫性的囤积者一样思考,把任何有可能在将来有用的东西都存起来。这种本能可能有助于调试软件,但它会留下可供任何人查找的数据踪迹。

数据库中的每个列和表都是绝对必要的吗?当有疑问时,使表单更短,数据库表更小。避免成为“数据包狂”的诱惑。简化一切。数据窃贼会讨厌你,但其他人会喜欢花更少的时间填写表格。

安全编程提示3:避免信任密码超过必要

大家都知道使用密码的问题,但没有人知道一个更好的解决方案。人们忘记了自己的密码,选择那些过于简单,然后一次又一次地重复使用。然而,没有其他的解决方案是根据需求,灵活简单。

一些公司已经在使用N-factor身份验证的过程中克服了几个不同的障碍。他们可能会向你的手机发送一条带有随机号码的短信,让你把它和密码一起输入。这是个不错的装置,除非你忘了带手机,把电池烧了,或者发现自己身处一幢短信无法到达的大楼里。

它总是能够与其他锁定了加密密钥的特殊硬件添加更多的安全性。他们是昂贵的,虽然和更容易失去比手机。

其它网站跟踪您使用登录到自己的服务中的IP地址。如果你的方法从未知地址的系统,他们给你一个礼貌的电子邮件,以防万一。

这些选择都不是完美的,但它们比仅仅依靠密码要好。重要的一步是认识到字母串的限制,即使有些字母是大小写字母、数字和标点符号的正确混合。

安全编程尖端4号:协商要求

构建安全的代码并不只是发生的事情在代码编辑器。当经理要求草案,并与开发商进行讨论,每个人都应该认真考虑如何每个需求可以打开大门的道路问题。

特征可以是可爱的,但它会迫使你保持更多的敏感信息,提高安全水平所需的无处不在?是一个华而不实的功能,值得所有这些额外的麻烦?开始对未来的违反保护您的代码正确的时间是当需求文档仍然是灵活的,客户不垂涎你已经答应他们的特征。

安全编程技巧5:在代码中添加延迟

许多攻击依赖于使用电脑坚持不懈地努力努力再努力。这可能需要十万,几百万,迭代万亿,但电脑并不关心。有些人通过查询假装是一个用户的发送数以百万计屏幕抓取数据库。其他潜在的尝试密码,直到万亿恰到好处的找到一个。

诀窍是逐步增加更多的延迟来迷惑这些机器人。在许多情况下,您不希望您的软件非常快或非常有效。你希望它足够快,以支持正确的人,但太慢,让攻击机器人完成太多任务。

有些登录程序会因为每个不正确的密码而使延迟加倍。一些数据库限制来自每个IP地址的查询数量。有些系统故意向人发送电子邮件请求,以减慢你的速度。这完全是出于安全考虑,因为人类不会注意到额外的一两秒钟,但机器人会无聊到效率低下的地步。

安全编程提示6:使用加密方式往往比你认为你应该

加密常常没有得到充分利用,因为它给机器增加了又一个步骤,而且使调试变得更加困难。在一个系统中发现错误是很困难的;当数据是一堆难以理解的数字时,这就更难了。

但是,什么是无法理解的,你也无法理解的攻击者。将其存储在数据库之前锁定了个人数据为您节省担心数据库,底层操作系统的麻烦,并在一定程度上可能骨子里运行管理程序。

适当的加密量不需要减少功能。在我的书“半透明数据库”中,我研究了许多不同的例子,它们仍然可以在保护个人信息的同时提供有用的服务。另外,额外的保护本身就是一个特点。

安全编程提示7:砌砖墙

需要补充的安全性往往不能为便于使用的需求竞争。人们讨厌保持登录到系统的不同部分,但它可能是危险的所有系统和权力联系在一起成一个门户。一个薄弱环节损害了一切。

有没有简单的方法来决定它应该只是多么容易为用户导航系统,并完成他们想要只需点击一下什么。你越使其成为合法用户,你越使它成为谁在滑倒的攻击者。

它可以是有意义的隔离是最敏感的业务并入一个独立的系统,并要求人们再次登录时,他们想使用它。银行可能会提供一个门户网站,检查状态和存钱的能力,但它可能款项前需要多得多的认证。

安全编程技巧8:测试过的库——使用它们

加密是很难做的很好,再好的理论和精心打造的代码可以有漏洞和后门。它通常是重新塑造一个良好的测试库中的错误,但它更是问题重重加密。经过充分测试的库是在这一领域比其他人更重要。这里选择更好的代码并没有发明自己的算法。

安全编程提示第9号:使用内部API

打破你的代码模块和执行,通过精心设计的API通信是一个古老的教训大家都在自己的职业生涯的早期学习。这是更有价值的安全性,因为API可更简单地审核相互作用,发现漏洞,并解决问题。模块可以单独审查,其结果可以结合起来。

创建内部子模块通常也是有意义的;同样的思想也适用于模块内部。部分比整体更容易分析。

安全编程提示第10号:在外部审计带给批评你的代码

我们每个人都可以使用编辑器。如果一个企业在一个精心打造的安装基础的投资,这也应该是在代码审核投资。这些可识别的缺陷,并为改善码​​建议。

一般来说,更多的眼球查看代码可以发现可能发生的问题。外部人士还可以打破内部政治僵局,打破联系。他们通常不知道比内部人士更多的东西,但他们的优势是不属于内部派系。

安全编程技巧11:代码分析器是你的朋友

虽然远非完美而不是聪明人,代码分析器可以是值得的。毕竟,他们勤奋,他们不累了,渴了,饿了,或无聊。

代码分析器像马里兰大学FindBugs的工具可以寻找当我们没有想到我们做常见的错误。许多这些错误的有一点做与安全,但有些可能是致命的。

安全编程技巧12:限制特权

开发人员喜欢提前考虑,给用户提供他们可能需要的所有访问权限是为未来做计划的一种简单方法。如果他们刚刚开始项目,为什么不让他们能够读取所有数据库并提交代码呢?系统也是如此。如果您的一个开发项目要访问数据库,为什么不给代码一个登录,让它们能够读取、写入和更新?

虽然让门开着是处理未来杂务的一个简单方法,也可以避免给用户和工作人员制造麻烦,但正如第一个提示中提到的,开着的门经常是第一个被滥用的途径。一个好的原则是为代码和人员提供完成工作所需的最小数量的特权。

如果这变成了一个令人头疼的管理问题,产生了太多对额外特权的请求,那么重新考虑数据的总体架构可能是有意义的。你保留的信息太多了吗?如果人们需要更多的访问渠道,而你却不愿意提供,那么你可能储存了太多的信息。保存更少的数据(技巧2)可以让每个人都能更容易地访问。

安全编程技巧13:模拟你的威胁

你有信用卡号码吗?那么一个普通的小偷可能是想要你的信息。你会用手机追踪人们的位置吗?危险变得更加可怕。

支出约谁想要你的数据可以是一个有用的前驱时间去思考。如果你能想象一个威胁,你可以记住的攻击,而你设计和实施制度。他们提出了一个antiuse情况下避免。

要认识到,没有列表或模型将永远是完美是很重要的。正因为威胁不是凭空想象,并不意味着你不必对此担心。这只是一个开始。

安全编程提示第14号:信任是双向的

这很容易被怀疑那些谁登录到您的网站,但请记住,他们应该怀疑你。你真的保存自己的钱存入银行,或者你是一个钓鱼网站试图窃取他们所拥有的一切?

一些网站正在投资向客户证明自己。他们要求客户上传一些照片或一组文字,网站可以用来证明他们是他们所说的人。这可以让每个人都更安全。

安全编程提示第15号:随时了解最新的病毒威胁

紧跟行业潮流是绝对必要的,而《信息世界》只是报道悲剧性错误的出版物之一。好的文章可以告诉你别人做错了什么,给你一个机会像一个未经授权的小偷一样思考。

了解过去发生的事情是,开始规划未来的时候了类似的攻击者可能会在你的好方法 - 类似的攻击者是谁也念叨他们同样的文章和思想更恶意的方式。一旦想法是在那里,你必须采取通知或攻击者将获得你一跳。

安全编程技巧16:深入研究会有回报

每日出版是如何不踩深粪肥的第一稿。在研究人员有时间思考问题出在哪里之后,阅读他们所写的书籍和期刊文章会得到更好的教训。这些通常包括好的规则和方法来避免将来出现问题。

花些时间和金钱在书本上,通常是一种从高薪顾问那里获得知识的极其廉价的方式。一本书200或300美元的价格可能贵得离谱,但当咨询师还收取每小时500美元的费用,并坚持最少要读20小时时,情况就不一样了。

安全编程技巧17:自学

你可以注册一所当地的大学,或者在网上尝试新的免费课程。这些都是学习信息的不同方式,而这些信息往往还没有被提炼出来并以书本的形式呈现出来。教授们通常关注学术会议上的最新出版物,其中可能包括大量的脚注和指示。即使你已经知道了很多信息,旁听课程也能帮助你跟上最新的发现和出版物。

这个故事,“保护您的代码:17个开发者安全提示”最初发表信息世界

加入对网络世界的社有个足球雷竞技app区Facebook的LinkedIn对那些顶级心态的话题发表评论。
相关:

版权©2013Raybet2

工资调查:结果在