2

对于每个 Asp.net MVC 应用程序,我们使用静态或动态密钥来验证用户请求/响应,例如在 web.config 文件中,由于具有静态验证,我们可能会使用它:

<machineKey validationKey="AC7308C5274D969E665AC7BED7A863582B571D97D9ED03B314952BD3DD159CDFC164E2341D44BDE8F0284FA924052817B3D7429433AABC3F53A118BB7B3F9ABB" decryptionKey="1EDB4490EC0074F7FF3099D450D5E92F1D39F577F9799D14033D1B27DB0F7A93B" validation="SHA1" decryption="AES" />

另一方面,我们有一个名为 SSL(安全套接字层)的工具来升级 Web 应用程序的安全性。SSL 也有不可否认机制。

考虑到这一点,我的问题是:

它们之间存在哪些差异?什么类型的工作与他们相关?每个将保护 App 的哪一部分?换句话说:我们能否通过使用 MVC ValidationKey 而不是 SSL 对我们的应用程序充满信心?

令我困惑的概念是:它们同时具有 Encryption/Decryption

4

1 回答 1

4

非常高级的答案是它们保护不同的东西。它们是互补的;安全的 ASP.NET 应用程序同时使用它们。

SSL 用于保护客户端和服务器免受不受信任的第三方的侵害。它提供身份验证:客户端知道他正在与之交谈的服务器的身份。它还提供完整性保护:客户端知道他获得的页面实际上来自服务器而不是攻击者。并且它提供了保密性:没有人可以读取客户端在结帐期间发送到服务器的信用卡号。

另一方面,<machineKey> 元素保护服务器免受恶意客户端的攻击。考虑到您的服务器向我发送了一个登录 cookie,上面写着“levi”。如果我将 cookie 内容改为读取“amir”会怎样?<machineKey> 加密服务允许服务器验证当 cookie 和表单字段(例如,__VIEWSTATE)等信息从服务器 -> 客户端 -> 服务器往返时,客户端没有在恶意软件中篡改有效负载时尚。

于 2013-08-28T03:41:05.927 回答