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

    文章

    607

    浏览量

    27329
  • 信息安全
    +关注

    关注

    5

    文章

    649

    浏览量

    38876

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

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

收藏 人收藏

    评论

    相关推荐

    TPA311D1的四项增益可选是什么意思呢?

    请问调节电位器是在调节功放的放大倍数么? TPA311D1的四项增益可选是什么意思呢?这四项增益是阶跃式还是连续的?
    发表于 11-04 06:46

    维信诺四项屏幕集成创新技术

    屏幕作为信息交互的窗口,正沿着多种功能集成一体化方向演进,带来更多维、更便捷的交互体验。本届展会,维信诺带来四项屏幕集成创新技术,不仅拓宽了屏幕技术的边界,也为用户带来了+1+1+1+1的交互升级。
    的头像 发表于 09-20 10:07 487次阅读

    Vector DaVinci Team解决方案实现AUTOSAR Classic ECU软件开发

    单元(HPC)和区域控制单元(Zonal ECU)分工协作的架构。因此,ECU的软件功能越来越多,越来越复杂。ECU的软件开发,也将引入不同部门、不同公司的更多项目开发人员的协作。在ECU软件
    的头像 发表于 09-13 11:23 801次阅读
    Vector DaVinci Team解决方案实现AUTOSAR Classic ECU<b class='flag-5'>软件开发</b>

    C2000 ePWM开发人员指南

    电子发烧友网站提供《C2000 ePWM开发人员指南.pdf》资料免费下载
    发表于 09-07 09:45 0次下载
    C2000 ePWM<b class='flag-5'>开发人员</b>指南

    使用MATLAB、Simulink和Polyspace加速软件定义汽车开发

    开发软件定义汽车 (SDV) 时,开发团队必须具备新的能力,例如进行连续的软件发布,减少软件更改的交付周期以及尽可能减少部署失败。同时,平台团队需要为车载计算机和区域控制器创建新
    的头像 发表于 09-05 09:57 354次阅读
    使用MATLAB、Simulink和Polyspace加速<b class='flag-5'>软件</b>定义汽车<b class='flag-5'>开发</b>

    2024 ACT汽车软件安全技术周 龙智即将携全方位汽车软件开发解决方案亮相,助力应对汽车软件开发功能安全

    2024年7月18-19日(周-周五),2024第三届ACT汽车软件安全技术周将在上海佘山翰悦阁酒店举办。 龙智即将携汽车开发及管理解决方案创新亮相,并在汽车
    的头像 发表于 07-08 16:17 507次阅读
    2024 ACT汽车<b class='flag-5'>软件</b>与<b class='flag-5'>安全</b>技术周 龙智即将携全方位汽车<b class='flag-5'>软件开发</b>解决方案亮相,助力应对汽车<b class='flag-5'>软件开发</b>功能<b class='flag-5'>安全</b>

    软件开发珠玑》+60条戒律

    包含需求、设计、项目管理、文化和团队合作、质量、过程改进6个方面的内容,提供了丰富、实用的工具和方法。当开发人员更好的理解了需求时,便能够从用户的角度触发思考更优秀的解决方案。从这点来看,每个软件开发人员或团队人手一份这本书,
    发表于 06-24 19:27

    浅谈存内计算生态环境搭建以及软件开发

    ,这也为软件开发人员带来了新的挑战,例如需要深入了解存内计算的工作原理,以及如何优化代码以充分利用其性能优势。同时,开发人员还需考虑如何在保持软件灵活性的同时,提高与存内计算硬件的兼容性。 为了更好地适应
    发表于 05-16 16:40

    三星停止自动驾驶研究,开发人员转到机器人领域

    近日,三星电子宣布了一重要的研发战略调整。据业内人士透露,三星先进技术研究院(SAIT)已决定停止自动驾驶汽车的研究,并将这一领域的开发人员转移到机器人领域。
    的头像 发表于 05-13 09:21 418次阅读

    嵌入软件单元测试工具的作用

    嵌入软件单元测试工具是现代软件开发过程中不可或缺的一环。它的作用在于帮助开发人员软件中的各个单元进行测试,以确保其功能的正确性和稳定性。单元测试是
    的头像 发表于 04-23 15:31 407次阅读
    嵌入<b class='flag-5'>软件</b>单元测试工具的作用

    GTI颁奖典礼落幕,华为无线再度斩获四项大奖

    在刚刚落幕的GTI Awards 2024颁奖典礼上,华为无线再度斩获四项大奖。
    的头像 发表于 03-01 09:38 384次阅读

    嵌入式软件开发应该掌握哪些知识?

    的控制,如GPIO、串口、SPI、I2C 等。这使得嵌入式软件开发人员能够充分利用硬件资源,满足特定的需求。 1.2数据结构与算法 嵌入式系统通常具有有限的内存资源。通过使用合适的数据结构和算法,可以
    发表于 02-19 11:23

    嵌入式软件开发软件开发的区别

    嵌入式软件开发软件开发是两个不同的概念,它们在一些关键方面有着明显的区别。嵌入式软件开发是指开发嵌入在硬件设备中的软件,而
    的头像 发表于 01-22 15:27 2171次阅读

    最新发布GSDK软件开发工具包4.4.0版本,提高IoT无线设计效率

    SiliconLabs (亦称 “ 芯科科技 ” )日前发布了 Gecko 软件开发工具包( GSDK )的最新版本 4.4.0 。新释出的 GSDK 是全球物联网开发人员最关注物联网的软件开发平台
    的头像 发表于 12-18 16:40 571次阅读
    最新发布GSDK<b class='flag-5'>软件开发</b>工具包4.4.0版本,提高IoT无线设计效率

    CodeBlocks属于什么软件

    开发人员在一个集成的环境中进行软件开发。 CodeBlocks是一个开源的自由软件,意味着它是免费提供给用户使用的。它最初是由一群热衷于C++编程的开发人员共同
    的头像 发表于 11-26 09:53 3875次阅读