- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
当您需要存储敏感数据(例如 CC 或 SSN)时,您是否:
1) 在应用程序中构建您自己的加密例程,在配置文件中的某处定义 key ,然后手动加密/解密进入数据库的数据。
2) 使用内置的数据库功能(我认为大多数供应商称之为透明数据库加密)将所有问题推送到数据库。
您为您的解决方案找到了哪些权衡点?与 TDE 相比,您自己编写的例程是否表现不佳?代码可维护性或相反的数据库供应商锁定是一个问题吗?
最佳答案
我使用过多种加密技术,我相信使用经过验证的加密例程(即 .NET 库)在应用程序端进行加密既简单又安全。
如果您在数据库上加密,这意味着数据以未加密的形式发送到数据库或从数据库发送。这可能允许在应用程序和数据库上的加密例程之间进行窥探/篡改。即使你把 key 存放在应用程序端,数据库端仍然需要它来进行加密。如果数据库遭到破坏,您的数据将面临严重风险(想象一下有人在您的应用程序运行时运行探查器)。
如果您在应用程序中加密/解密,敏感数据(包括 key )永远不会泄露到应用程序服务器之外。有人必须同时破坏 Web 服务器和数据库服务器才能访问您的所有数据。
此外,我强烈建议您不要推出自己的加密例程。您很可能会犯错误,这会降低解决方案的整体安全性。
编辑:
还想添加另一个会影响您的决定的因素。您需要查询该加密数据吗?如果您在应用程序级别加密,则需要将数据带到应用程序、解密并从那里开始工作。随着数据集变大,这变得令人望而却步 - 而使用数据库加密,您可以在将数据发送回应用程序之前对其进行过滤。
关于asp.net - 数据库加密还是应用层加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4002184/
理论上,一般来说: 数据访问层保存数据库连接和查询。 业务层保存模型和逻辑。 服务层包含应用程序服务的主要服务。 表示层保存网站。 我说得对吗?我错过了什么吗? 什么是基础设施层? 最佳答案 是的,我
我知道 Android 没有像 Activity 具有 onPause 那样的应用程序级 onPause,但看起来我需要类似的功能。我刚才问了一个(愚蠢的)问题(http://stackoverflo
2022-12-04 18:31:01 纪念一下博主的《漫谈计算机网络》连载博客 浏览量破500了. 今天更新完结篇. 面试答不上?计网很枯燥? 听说你学习 计网 每次记了都会忘? 不妨抽时间和我
我一直在尝试构建一个基于 DDD 的应用程序,但我有一些问题。 我有一些层:- 表示层 - MVC- 应用层- 域层... 首先,我想知道我是否可以在ApplicationLayer中执行此操作(获取
我想知道如果我创建一个 OkHttpClient 实例来服务我的“整个 android 应用程序”,是否会出现任何性能瓶颈或问题。即在我的 Application 类中,我创建了一个包含 OkHttp
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 3年前关闭。 Improve this qu
我是一名优秀的程序员,十分优秀!