普通的留言。听起来在继续之前学习一些基本的安全概念对您和您的老板会有所帮助。安全是一个专业领域。你不会让街上随便一个人给你做心脏直视手术;而且您不应该期望普通软件开发人员知道如何保护您的系统。
我在这里感觉到一些误解。例如,听起来你的老板已经将安全等同于密码学。但这是一个错误。正如 Bruce Schneier 所强调的那样,密码学不是可以撒在系统上以确保其安全的魔法小精灵。正如罗杰·李约瑟(Roger Needham)曾经说过的那句名言,如果你认为密码学可以解决你的问题,要么你不了解密码学,要么你不了解你的问题。
在保护计算机系统时,一个重要的概念是威胁模型。这意味着您需要仔细考虑您要阻止哪些类型的攻击和对手,以及您不是什么。未能清楚地思考威胁模型可能会导致安全战区:乍一看看起来不错的安全机制,但实际上在实践中严重不足。良好的安全管理通常归结为风险管理:仔细分析什么是最严重的风险,然后制定策略来减轻或管理这些特定风险。
同样重要的是要了解安全性是最薄弱环节的属性:系统的安全性仅与最薄弱的环节一样强。系统任何一个部分的漏洞都可能危及整个系统的安全。这意味着没有一个答案足以保护您的系统。相反,为了保护您的系统,您必须在许多地方获得正确的安全性。
深入细节。听起来您的目标是防止未经授权的敏感数据泄露。如果是这样,您将需要专注于许多项目。没有一种简单的灵丹妙药可以为您解决这个问题;您通常需要处理应用程序安全性。
如果我正确理解了您的目标,让我建议您应该优先考虑的一些事情:
应用安全。您需要开始学习 Web 应用程序安全性。你在这个问题上投入了多少加密货币并不重要;如果攻击者可以在您的应用程序代码中找到安全漏洞,那么您将被淹没。对于 web 应用程序安全的背景,OWASP 有很多优秀的资源。确保您了解 OWASP 十大,关于 XSS、SQL 注入、输入清理/验证、输出转义、白名单和其他概念。
访问控制。您的 Web 应用程序需要具有可靠的访问控制,以确保您系统的一个用户无法访问另一个用户的信息(未经授权)。这方面的详细信息将取决于您的特定系统的具体情况,因此如果您需要有关此方面的更多帮助,您可能需要发布一个单独的问题,其中包含有关您的应用程序和当前访问控制策略的更多详细信息。
验证。您的 Web 应用程序将需要一种方法来验证其用户。标准的最省力方案是只使用用户名和密码。然而,这在实践中具有严重的局限性,这是众所周知的。如果用户选择自己的密码,他们往往会选择较差的密码,这会破坏您系统的安全性。
安全的软件开发生命周期。您需要将安全性集成到软件开发过程中。当您制定软件架构时,您应该考虑安全需求并执行威胁建模和架构风险分析。编写代码时,您需要了解可能违反安全性的常见实现错误并确保避免它们。构建软件后,您需要测试其安全性并不断评估您在安全方面的表现。当您部署软件时,您的操作人员需要知道如何安全地管理它。Microsoft 有一些关于安全软件开发生命周期 (SDL) 的优秀资源。另请参阅 BSIMM 了解更多信息。
安全评估。如果您担心安全性,我建议您评估应用程序的安全性。一个简单的起点可能是让某人对您的 Web 应用程序执行渗透测试,以检查某些类型的常见错误。这绝不是安全的保证,但有时如果存在许多重大问题,它可以起到警钟的作用。您可以查看 WhiteHat Security 的服务;还有许多其他人将执行网络渗透测试。
如果你觉得这不是一件小事,我很抱歉,但事实确实如此。另一方面,好消息是那里有很多资源,而且你不需要成为专家级的安全大师:你只需要熟悉一些基本概念和一些常见的安全Web 编程中的错误,这将满足您的大部分需求。