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

    文章

    670

    浏览量

    29852
  • 信息安全
    +关注

    关注

    5

    文章

    693

    浏览量

    40479

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    CW32嵌入式软件开发的必备知识

    嵌入式软件开发作为计算机科学和电子工程的交叉领域,要求开发人员具备一系列的专业知识和技能。 而基于CW32的嵌入式软件开发必备知识包括以下部分: 1 、编程语言 熟练掌握C(C++)语言,这是
    发表于 11-28 07:48

    东风猛士M817荣获2025汽车安全大会四项重磅大奖

    10月31日,在中汽中心主办的2025汽车安全大会评选中东风旗下豪华智能越野品牌猛士科技携猛士M817参评,该车型凭借卓越的产品实力一举狂揽四项重磅大奖,在这场行业“赛场”上大秀肌肉。
    的头像 发表于 11-06 14:49 369次阅读

    芯科科技推出Simplicity Ecosystem软件开发套件

    、配置、调试和分析功能整合到一个智能的、且以开发人员优先的环境中,可在产品开发的每个阶段提供自动化和洞察力。
    的头像 发表于 10-27 16:45 715次阅读

    汽车软件开发阶段安全的意义与原则

    上海磐时PANSHI“磐时,做汽车企业的安全智库”好书分享/《一本书读懂智能汽车安全》汽车软件开发阶段安全的意义与原则本文节选自SASETE
    的头像 发表于 09-05 16:16 662次阅读
    汽车<b class='flag-5'>软件开发</b>阶段<b class='flag-5'>安全</b>的意义与<b class='flag-5'>原则</b>

    知识分享 | 敏捷方法在基于模型的软件开发项目中的应用

    传统的瀑布式软件开发流程存在诸多局限,这使得应用敏捷原则变得尤为重要,尤其是面对复杂且不断变化的开发环境时。作为最高效的软件开发方法之一,基于模型的
    的头像 发表于 07-16 16:52 1049次阅读
    知识分享 | 敏捷方法在基于模型的<b class='flag-5'>软件开发</b>项目中的应用

    嵌入式软件开发常用的软件有哪些?

    软件功能。 2. Visual Studio 简称VS: 它是一个IDE,集成开发环境。验证C程序或是进行c#程序开发,可以用它。一些与嵌入式相关的模拟器也是基于VS的。帮助开发人员
    发表于 07-03 17:06

    华为携手产业伙伴荣获四项大奖

    在2025 MWC上海期间举办的GTI (Global TD-LTE Initiative)国际产业大会上,全球首届“新通话×AI挑战赛”决赛获奖团队揭晓,华为携手产业伙伴荣获四项大奖,为产业界提供了5G-A和AI融合应用的成功案例,为新通话产业的创新发展提供了实践范本。
    的头像 发表于 06-24 15:53 729次阅读

    NanoEdge AI Studio 面向STM32开发人员机器学习(ML)技术

    NanoEdge™ AI Studio*(NanoEdgeAIStudio)是一种新型机器学习(ML)技术,可以让终端用户轻松享有真正的创新成果。只需几步,开发人员便可基于最少量的数据为其项目创建
    的头像 发表于 04-22 11:09 980次阅读
    NanoEdge AI Studio 面向STM32<b class='flag-5'>开发人员</b>机器学习(ML)技术

    IAR发布云端平台,助力现代嵌入式软件开发团队

    该平台为嵌入式软件开发人员提供前所未有的自由度与灵活性,助力开发团队在工具选择和日常工作流中实现更高效的协作与创新。
    的头像 发表于 03-12 11:56 601次阅读

    中兴通讯荣获GTI Awards 2025四项大奖

    近日,GTI Awards 2025获奖名单在MWC25巴塞罗那正式公布,中兴通讯携手中国移动、广州明珞装备、本溪工具荣获四项年度大奖,覆盖个奖项类别,包括“移动技术创新突破奖”、“移动创新服务
    的头像 发表于 03-10 15:50 996次阅读

    英特尔FPGA AI套件软件2024.3版本的主要亮点

    FPGA AI 套件软件 2024.3 版全新发布,其提供诸多增强功能,旨在改善开发人员开发体验。为帮助开发人员应对在实际应用中面临的挑战,此次更新也增加了多项新功能,从提高性能到提
    的头像 发表于 03-07 14:07 1142次阅读

    嵌入式系统信息安全概述

    。只有在生命周期的每个步骤都考虑安全性,才能防止这种情况发生,这些步骤包括: 1 威胁建模-在设计阶段,必须识别安全需求。 2 安全的组件-软件开发人员必须正确地实现
    的头像 发表于 01-24 11:36 920次阅读

    亚马逊云科技发布Amazon Q Developer,重塑软件开发与运营

    近日,亚马逊云科技宣布了一重大创新——Amazon Q Developer。这款功能强大的生成式人工智能(AI)助手,旨在大幅提升开发人员软件开发与运营流程中的效率。 Amazon Q
    的头像 发表于 12-24 16:39 892次阅读

    晶科能源连获四项雇主荣誉

    2024接近尾声,晶科能源凭借强劲的雇主品牌影响力接连获得四项荣誉大奖,这不仅是对过去一年成就的肯定,也是对未来潜力的最佳证明,荣耀时刻,与你共享共庆。
    的头像 发表于 12-11 10:19 726次阅读

    MSPDebugStack开发人员指南

    电子发烧友网站提供《MSPDebugStack开发人员指南.pdf》资料免费下载
    发表于 12-05 14:49 1次下载
    MSPDebugStack<b class='flag-5'>开发人员</b>指南