Segurança da Informação
Aplicativos
LGPD
Privacidade
Boas Práticas

何时创建应用程序:安全初学者不能忽视

考虑安全性的时间不是在第一次泄漏之后,而是在第一行代码之前。

问题“我应该构建一个应用程序吗?”它几乎总是伴随着成本表、画布创意和成长梦想。它很少伴随着像“我准备好保存将使用它的人的数据吗?”这样重要的问题。

这种缺席并不是邪恶的。这是无知。那些刚刚起步的人认为安全问题将在产品发展后得到解决。但安全性并不是最后添加的功能,而是基础。而且您无需为已建成的建筑物添加地基。

本文适用于任何决定创建应用程序并希望从第一天起就无需使用专业术语就能理解的人。不是为了成为专家,而是为了避免日后做出代价高昂的决定。

为什么安全比代码更重要

每个执行有用操作的应用程序都会存储数据。姓名、电子邮件、电话、位置、使用历史记录,有时还包括文件和付款详细信息。从您收集一个人的第一个数据的那一刻起,您就承担了法律和道德责任。

在巴西,它有一个名称:[LGPD0,通用数据保护法。这不是一个建议。它定义了您对您收集的数据负责,您需要有法律依据来收集这些数据,并且您需要保护它。初创应用程序和大型企业应用程序受同一法律约束。

实际后果:您无法决定是否担心安全问题。你只能决定在问题出现之前还是之后担心。而且它总是更加昂贵,无论是金钱、声誉,有时还是罚款。

论文:安全性是一项架构决策,而不是维护决策

这篇文章的中心思想很简单。安全性并不是放置在成品之上的一层。这是一系列从一开始就决定产品构建方式的决策。

数据存储的地方。如何处理密码。谁能看到什么。应用程序如何与服务器通信。这些选择中的每一个都是早期做出的,稍后重新做出它们意味着重写系统的整个部分。

这就是为什么初学者考虑安全性的最佳时机不是在他们已经很高级的时候。现在正处于起步阶段,做决定的成本仍然很低。

任何人都不应跳过的基础知识

您无需掌握[密码学1] 即可负责任地开始。它需要尊重一些能够解决大多数初始风险的原则。

切勿以纯文本形式存储密码

切勿在用户键入密码时保存密码。它们经历一个称为“哈希”的过程,将它们转变为不可逆转的东西。即使有人窃取了[数据库2],他们也无法读取密码。现代框架已经为您做到了这一点,初学者的错误是匆忙禁用或绕过此保护。

从一开始就设置身份验证和授权

身份验证是确认该人是谁。授权定义了它可以做什么。两者不同,但都很重要。一个常见的错误是保护登录屏幕,但忘记在每个操作中检查该用户是否有权执行此操作。结果是经典的:更改 URL 中的数字并访问其他人的数据。

所有通信都必须加密

应用程序和服务器之间传输的数据必须使用 HTTPS 进行保护。如果没有这个,共享网络(例如咖啡馆 Wi-Fi)上的任何人都可以拦截正在发送的内容。如今,这是标准的且便宜的。没有理由不这样做。

只收集你需要的东西

最安全的数据是您不保留的数据。在询问信息之前,先问自己:我真的需要这个吗? “因为有一天可能有用”而收集所有东西会增加你必须保护的东西以及面对 [LGPD3] 时的风险。数据最小化同时是一种良好的安全实践和法律要求。

一个具体的例子:未经黑客攻击而泄露的应用程序

想象一下由一位崭露头角的企业家创建的小型日程安排应用程序。它运作良好,发展良好,赢得了用户。有一天,有人发现,通过更改请求中的标识号,他们可以看到任何其他客户的预约,包括姓名、电话号码和地址。

没有复杂的入侵。没有天才黑客。授权失败:系统确认了您的身份,但未验证该数据是否是您的。这是最常见的缺陷之一,被 OWASP 列为主要应用程序风险之一。

给初学者的教训:大多数泄密并非来自电影院攻击。它来自基本的疏忽,而从一开始就应用简单的原则就可以避免这些疏忽。

使用已经存在的东西而不是发明

那些刚开始的人有一种可以理解的本能:想要从头开始构建一切,以了解它是如何工作的。在安全方面,这种本能是危险的。密码学、密码管理和[身份验证4]即使是专家也会犯错误,而且一个细微的错误就会造成一个巨大的漏洞。

对于初学者来说,负责任的途径是使用综合库和服务,这些库和服务由已经面临并解决了您甚至无法想象的问题的社区维护。不要编写自己的密码算法。不要发明自己的登录方案。使用经过数千人测试并在出现故障时更新的内容。

这也适用于保持依赖项更新。大多数攻击利用的是已知的缺陷,并且已在新版本中得到纠正,而受害者根本没有安装这些缺陷。升级是最便宜且最容易被忽视的防御措施之一。

业余爱好者与专业人士的区别

有一个危险的心理陷阱:“我的应用程序太小,无法成为目标。”事实恰恰相反。小型应用程序通常具有最薄弱的保护措施,因此很容易成为自动攻击的目标,这些攻击会扫描互联网以查找已知缺陷。没有人需要特别想攻击你,所需要的只是机器人发现门开着。

这里的成熟不是技术上的,而是态度上的。可以理解的是,当您索要某人的数据时,您就做出了关心的承诺。违背这一承诺,即使是无意的,也会给现实中的人们带来真正的后果。

商业中有一点是初学者低估的:信任是最难重建的资产。产品可以从功能故障中恢复。从暴露客户的漏洞中恢复要困难得多。

从简单开始,但从正确开始

您不需要堡垒来启动您的第一个应用程序。它需要坚实的基础:受保护的密码、加密的通信、经过验证的授权和最少的数据收集。这已经使您领先于市场上的大量产品。

对于初学者来说,安全并不是要了解一切。这是关于不犯你知道如何避免的错误。只要基础正确,其余的都可以随着时间的推移而学习。

如果您即将创建一个应用程序并希望了解如何通过设计构建安全性,博客上还有其他关于 LGPD、[身份验证 5 和安全架构] 的文章,可以更深入地探讨这些要点。如果这是您组织中的决策时刻,则值得在编写第一行之前进行讨论。

另请阅读

  • [缩放时的数据泄漏保护:随着容量的增长,会发生什么变化6
  • 【数据加密:如何在日常开发中应用7
  • 【小团队数据泄露防护:毫不夸张的要点88
  • 【内容推荐:系统扩容时的安全与隐私9
  • [网络应用程序的安全性:任何人都不能忽视的基础知识10
  • [小型团队应用中的 LGPD:符合您现实的严格最低要求11