c# - 为什么要在 ASP.NET 中加密查询字符串?

标签 c# .net asp.net

我正在开发一个用 C#/ASP.NET 编写的网络应用程序。此应用程序的原始开发者选择使用加密的查询字符串和 Viewstate 来控制应用程序的“安全性”和“状态”。

在此之前来自 GET/POST 世界,我没有很好的基础来理解为什么人们会经历加密查询字符串的麻烦,当对敏感数据使用 POST(连同 SSL)会实现类似的安全级别。

我的问题是:在 ASP.NET 中使用加密查询字符串的优点和缺点是什么?是否有记录在案的“最佳实践”?


编辑:人们倾向于关注这个问题中的Viewstate不要。提到 Viewstate 只是为了让您更好地了解“状态”是如何管理的,因为它与 URL 无关。我从未说过 Viewstate 已加密。确实存在两个问题:1) Viewstate 的使用,以及 2) 加密查询字符串的使用。本题侧重于后者。我希望这有助于澄清问题的重点。

最佳答案

您可能会这样做的一个原因是为了防止篡改 URL 以访问您自己以外的数据。例如,如果您有以下网址:

http://foo.com/user.aspx?user_id=123

我(或任何人)不难将其更改为:

http://foo.com/user.aspx?user_id=124

如果您的数据访问策略完全依赖于查询字符串中的内容,则可能允许对数据进行未经授权的访问。

这种方法确实可以正确地达到这个目的,但更稳健的方法是在应用程序中主动检查授权,并且永远不要完全依赖 URL 来进行身份验证和/或授权。

请注意,这与 SSL 无关 - SSL 确保浏览器和服务器之间的隐私,但您可以在完全安全的连接下仍然篡改 URL。

关于c# - 为什么要在 ASP.NET 中加密查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/491603/

相关文章:

c# - 在 WPF 中不断绘制大量位图的最佳方法?

javascript - DatePicker 始终设置为第一行 ASP.NET MVC

c# - 函数或变量可以存储在命名空间而不是类中吗 - C#

c# - 在 AS3/C# 中使用盐加密字符串

.net - 我在哪里可以找到好的 .NET PDF 库?

c# - 是否可以将 ReSharper 设置为在 IDisposable 处理不当时发出警告?

asp.net - web.config可以从外部xml文件读取吗?

c# - SQL语法错误

c# - .NET OWIN 身份验证 - Cookie + Windows(事件目录)

c# - 为什么在 C# 中调试泛型时不能执行 (A)o,但 (o as A) 可以?