0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

软件开发人员应遵循的四项信息安全原则

Dbwd_Imgtec 2018-03-08 18:52 次阅读

信息安全性是一个经常被开发人员误解的主题,因为绝大多数人关注的是安全技术层面,而非涉及人员、金钱、风险和业务优先级等更广泛的主题。因而,我们经常看到因为决策失误使得问题更为复杂,同时也造成资源浪费。

在构建和选择安全解决方案的时候,开发人员必须为业务和组织架构挑选出最为准确的方案。对于初级开发人员而言,如何清楚地知道该在哪些范围内做出安全决策,显得尤其重要。

1. 避免教条主义和绝对主义

最近有一位投稿人在dev.to 文章中分享了关于JSON网页令牌和本地缓存主题的建议,如下。

现如今我所能看到的最大的安全隐患是JWTs(session 数据)的本地缓存。然而许多人并未意识到这些JWTs数据本质上就等同于用户名和密码。如果JWT被黑客复制,他就可以以你的名义向网站发送各种请求,而你却一无所知。要像对待信用卡账号和密码一样来对待你的JWTs,绝不要将其存储在本地。

提出这个建议的文章很好,并且涵盖了很多关于JavaScript本地缓存的重要话题,确实值得一读。但遗憾的是,这种关于JWTs和安全的描述具有误导性,至少缺少开发者所需要理解的细微差别。

使用 JWT 本地存储的立场绝对是:不要这样做!你将JWT存储在哪并不重要,存储在某个'安全'的地方并不能保证安全。关键问题是,你在JWT中存放了什么信息,你用JWT做什么,去获取什么?

如果你的回答不包含任何的个人可识别(标志)信息,或含有最少的个人可标志信息,这样的话你就可以考虑使用JWT去做你想做的。如果关于以上问题的回答是:存储他们所有的信用卡信息,那么你应该考虑用另外的技术来替代JWT。

比如,如果你要实现在线新闻出版物内容收费,本地存储的JWTs将是一个完全可以接受的安全解决方案。你保护的内容是低价值的,没有个人可标志信息,所以黑客对这些内容并不会感兴趣。尽管普通Web用户没有付费时JWT会打断(终止)其访问内容 — 一个简单的安全需求解决方案。

你会注意到这种解决安全问题的方法并不是那么教条和专制。有才华的开发者倾向于成为教条主义和专制主义者,可能是因为他们看到的所有东西都是“不好的”,或者至少不够完美。这有点像当年柏拉图在公元前5世纪看待雅典时期的态度,但像柏拉图一样,这种方法可能会导致解决不好的方案和糟糕的答案。对于试图理解某个话题的人来说,这可能是无益的,特别是如果他们是新手的话。

在处理安全问题以避免教条、专制主义和一刀切等问题时,这是明智的。这与道德绝对“不要杀戮”相当,因为安全涉及更多的细微差别。

2. 没有跟安全性一样的事物

安全的核心有一个极大的讽刺,那就是它并不存在。最近Google Chrome在Twitter上宣布,他们将把所有使用HTTP的网站标记为“不安全”。他们已经在网址栏中将HTTPS网站标记为“安全”。

Twitter广告信息及隐私

这很奇怪,因为HTTPS或通过TLS的HTTP是非常有用的安全增强功能,但不能保证其安全性。这是完全可能的:建立一个站点并通过HTTP提供服务,可提供比通过HTTPS服务的站点更安全的方式。

Google此举非常不负责任,因为他们会使普通网络用户处于危险而不自知,以至于对线上行为放松警惕。而这还未涉及HTTPS 连接是如何实现的,请参见灵活的SSLCloudFlare。将这类连接定义成“安全”或者“不安全”会产生误导,更为明智的做法是定义为“私人的”或“公共的”。

绝对的安全并不存在,就算是采用最先进的技术也不能保证。安全性是相对被保护的对象而言的。几千年来,人类建造了各种各样的围墙来保证安全,但皆非固若金汤。

如果不信,那就找个伊朗人问问。凭借以色列人的帮助,美国在2009年入侵了伊朗名为 Natanz 核设施,其中或许还有英国人的帮助。或许你还记得当时Stuxnet 病毒 ,它可是这起事件的罪魁祸首。那次黑客的特别之处在于,Natanz 核设施采用的是空气隙技术,它可能是世界上最安全的设施之一,但也没能阻止美国人将病毒带入该设施从而扰乱伊朗的核计划。

如果你对这个话题以及类似这样的故事感兴趣,我建议你阅读Gordon Corera的书Intercept: The Secret History of Computers and Spies(截取:计算机和间谍秘史)。这是一本很棒的书,将为你介绍安全和黑客之类的话题。

良好的安全性需要构建一个高于你所保护的资产价值的墙。也就是黑客攻击你的系统的代价会比黑客窃取它之后的价值更高。这也意味着你的安全性应该与你所保护的内容相符。例如,不要在服务器上使用网闸(air gap)来保护从网络注册表中收集到的一些电子邮件地址,否则这将非常浪费金钱。

3. 了解潜在的威胁

在建造你的防火墙时,了解你所面临的威胁是很重要的。安全威胁可以分解为四个基本分组:

• Kiddy Scripters(初级脚本)和自动化威胁:参考大多数WordPress/Joomla hacks。

• 熟练的黑客和黑客组织:匿名,LulzSec

• 有组织犯罪和次要国家成员:黑手党,北朝鲜

• 主要国家成员:美国,中国,俄罗斯,以色列,英国

大多数开发人员很少会处理高于第一级的任何事情。其原因有两方面,你必须做一些重要的有财务价值和/或具有显着的政治价值的事情才能超越这一级。这方面的例子包括敏感的政府工作、公司的财务方面以及重要协作意向。

同样威胁是多样化的,并不一定与黑客攻击数据有关。例如,你的组织可能相比于数据泄露更容易遭受DDOS攻击。作为一名开发人员,重要的是要考虑你的组织可能会如何受到影响,而主要漏洞可能并不总是以财务或PII为重点,这可能事关声誉。通过让你的网站离线以使你的组织遭遇尴尬,这可能会比窃取你的服务器上的PII更具价值。

2014年的Fappening事件是一个组织未能正确理解威胁的经典例子。在这种情况下,Apple未能正确估算他们在iCloud系统上的内容,因此并没有实施可能限制其损害的安全功能。例如,当新设备或奇怪IP连接到帐户时发送电子邮件。Fappening是一个边缘案例,因为之前没有人真正考虑过名人数据的价值,但它确实强调了组织在面临的威胁时可能并不总是理智的。

4. 实现一个适当的解决方案

如果你在没有正确考虑你所面临的威胁的情况下实现通用安全解决方案,则你可能和不使用任何安全措施一样安全不了多少。

作为开发人员,在实现任何安全解决方案之前,你必须认真考虑你所面临的威胁。这样可以实现一个相应的安全措施。适当性并不仅仅是与安全威胁有关,它还涉及到你需要花多少钱。一个贫穷的国家不能建造中国长城,但如果它理解了这个威胁并合理地部署它的资源,它就能够防御之。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 软件开发
    +关注

    关注

    0

    文章

    550

    浏览量

    27175
  • 信息安全
    +关注

    关注

    5

    文章

    619

    浏览量

    38688

原文标题:软件开发人员应遵循的四项安全原则

文章出处:【微信号:Imgtec,微信公众号:Imagination Tech】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    开关电源开发人员必看

    电子发烧友网站提供《开关电源开发人员必看.pdf》资料免费下载
    发表于 11-08 15:41 0次下载
    开关电源<b class='flag-5'>开发人员</b>必看

    Zynq UltraScale+ MPSoC软件开发人员指南

    电子发烧友网站提供《Zynq UltraScale+ MPSoC软件开发人员指南.pdf》资料免费下载
    发表于 09-15 10:16 8次下载
    Zynq UltraScale+ MPSoC<b class='flag-5'>软件开发人员</b>指南

    Versal ACAP系统软件开发人员指南

    电子发烧友网站提供《Versal ACAP系统软件开发人员指南.pdf》资料免费下载
    发表于 09-13 15:20 0次下载
    Versal ACAP系统<b class='flag-5'>软件开发人员</b>指南

    ARM开发人员套件1.2版汇编指南

    功能是有限制的。 有关内联汇编器的更多信息,请参阅ADS开发人员指南中的混合C、C++和汇编语言一章。 这本书的其余部分主要是关于手臂的。
    发表于 09-01 10:41

    Arm Corstone™ SSE-700软件开发人员勘误表

    较高优先级的请求被拒绝并被解除断言。 SSE-700完成更高优先级请求的序列,然后执行HOST_sys_RST_REQ的重置序列,通过将安全飞地基本系统
    发表于 08-29 07:17

    ARM编译器5.06版软件开发指南

    其他功能,如浮点支持、单指令多数据(SIMD)指令、安全扩展、Java字节码加速和多处理支持。 ARM架构不断发展,以满足前沿应用程序开发人员日益增长的需求,同时保留保护软件开发投资所需的向后兼容性
    发表于 08-23 07:49

    ARM开发人员套件1.2版开发人员指南

    本书包含的信息将帮助您解决为基于ARM的处理器开发代码时的特定问题。 一般来说,本书中的章节假定您正在使用ARM开发人员套件(ADS)来开发代码。 ADS由一套应用程序以及支持文档和示
    发表于 08-23 07:29

    GitHub陆续封杀位于“美国贸易制裁国家”的开发人员

    Github 陆续封杀受美国制裁的国家或地区的开发人员账户,如果你在遭受美国制裁的国家/地区使用GitHub的在线服务,只能享用最基本的服务。
    的头像 发表于 08-21 10:34 533次阅读
    GitHub陆续封杀位于“美国贸易制裁国家”的<b class='flag-5'>开发人员</b>

    ARM GPU最佳实践开发人员指南

    我们的指南提供了在为Arm Immortalis和Mali GPU开发时如何优化应用程序的建议。这些建议是为那些希望开始使用Arm GPU的成熟开发人员准备的。
    发表于 08-10 06:58

    ADB-400异步域桥软件开发人员勘误表

    Arm CoreLink ADB-400 ADB-400 Asynconronoon 域桥面软件开发者Errata 笔记
    发表于 08-10 06:18

    UM-B-101:DA14585 IoT 多传感器开发套件开发人员指南

    UM-B-101:DA14585 IoT 多传感器开发套件开发人员指南
    发表于 07-05 20:59 0次下载
    UM-B-101:DA14585 IoT 多传感器<b class='flag-5'>开发</b>套件<b class='flag-5'>开发人员</b>指南

    UM-B-056:DA1468x 软件开发人员指南

    UM-B-056:DA1468x 软件开发人员指南
    发表于 07-05 20:36 0次下载
    UM-B-056:DA1468x <b class='flag-5'>软件开发人员</b>指南

    IzoT BACnet 开发人员指南

    IzoT BACnet 开发人员指南
    发表于 07-04 20:48 0次下载
    IzoT BACnet <b class='flag-5'>开发人员</b>指南

    通过使用AI改善开发人员体验的13种令人印象深刻的方法

    在当今快速发展的技术环境中,人工智能 (AI) 正在全面改变行业,软件开发也不例外。AI 可以通过简化流程、自动执行重复性任务以及使开发人员能够构建创新应用程序来显著增强开发人员体验。
    发表于 06-09 09:24 498次阅读

    安全软件开发的最佳实践

    安全软件开发最佳实践是必要的,因为安全风险无处不在。在网络攻击盛行的时代,它们可以影响每个人,包括个人、公司和政府。因此,确保软件开发安全
    的头像 发表于 05-08 10:51 484次阅读
    <b class='flag-5'>安全</b><b class='flag-5'>软件开发</b>的最佳实践