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

    文章

    711

    浏览量

    30146
  • 信息安全
    +关注

    关注

    5

    文章

    714

    浏览量

    40700

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AI 辅助代码修复:嵌入式软件开发的突破性进展

    凭借 AI 辅助修复,开发人员不仅能实现“边写边分析”,还能做到“边写边修复”。这不仅带来了更准确、更安全软件,还优化了缺陷检测与修复的左移流程,提升了开发速度,进而全面增强了嵌入式
    的头像 发表于 03-26 11:19 1630次阅读
    AI 辅助代码修复:嵌入式<b class='flag-5'>软件开发</b>的突破性进展

    软件定制开发人员相关的公司有哪些

    软件
    北京华盛恒辉科技
    发布于 :2026年03月02日 20:32:34

    嵌入式软件开发的 10 个技巧分享

    一上来就想写代码的冲动至关重要,首先用流程图制定一个软件架构图。这样的方**使开发人员对应用所需的不同部分与组件形成一个概念,就像电路逻辑图可以告诉工程师需要哪些硬件元件一样。这样可确保程序整体建立在
    发表于 12-25 06:04

    ADC模数转换实战:硬件设计与软件开发要点指南!

    为实现高精度、高稳定性的ADC模数转换,硬件与软件设计均需遵循特定原则。硬件层面需优化信号调理、参考电压及抗干扰设计;软件层面需合理配置采样参数、实现数据滤波及异常处理。本文将结合实际
    的头像 发表于 12-16 13:25 570次阅读
    ADC模数转换实战:硬件设计与<b class='flag-5'>软件开发</b>要点指南!

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

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

    创电子主导编制的四项北斗国家标准获批发布

    上述四项国家标准的发布,有力推动了北斗技术在海洋搜救、应急救援、低空经济、交通等领域的普及应用,为北斗导航产业的规模化发展和全球化推广提供了重要支撑。
    的头像 发表于 11-13 15:08 2217次阅读

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

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

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

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

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

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

    第三届大会回顾第7期 | 面向OpenHarmony大规模代码的路径敏感的稀疏值流分析

    静态分析(Static Analysis)是软件开发中不可或缺的一部分,它可以帮助开发人员提高代码质量、减少缺陷和安全风险。
    的头像 发表于 08-18 11:31 1276次阅读
    第三届大会回顾第7期 | 面向OpenHarmony大规模代码的路径敏感的稀疏值流分析

    Andes晶心科技推出AutoOpTune v1.0提升开发效率

    Andes AutoOpTune v1.0 可自动探索并选择优化编译程序选项,协助软件开发人员在效能与程序代码大小间取得最佳平衡,加速整体开发流程。
    的头像 发表于 08-18 10:23 1333次阅读

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

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

    Thingy:91 X 为开发人员提供了一个经过全球认证的、多传感器、电池供电的蜂窝物联网原型平台

    Thingy:91 X 为开发人员提供了一个经过全球认证的、多传感器、电池供电的蜂窝物联网原型平台 挪威奥斯陆 – 2024年12月10日 – 全球领先的低功耗无线连接解决方案提供商Nordic
    的头像 发表于 05-08 17:41 3345次阅读