asp.net - 在 ASP.NET 中使用查询字符串的最佳实践?

标签 asp.net query-string

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

5年前关闭。




Improve this question




在 ASP.NET 中使用 QueryString 时,我一直在寻找一些最佳实践指南,但还没有真正找到。

我找到了一篇有用的优化文章:http://dotnetperls.com/querystring

但我更感兴趣的是回答以下问题:

  • 案例规则?都是小写?帕斯卡案例? Camel 香烟盒?
  • 我个人的偏好都是小写,但一致性最重要。
  • 避免参数名称中的特殊字符?
  • 是否应该出于安全目的对参数和值进行混淆?

  • 等等...

    任何更多的指导方针将不胜感激!

    最佳答案

    最终用户可以查看和更改查询字符串中的任何内容。这意味着他们有可能更改它以查看或访问他们不应该查看或访问的数据,或者影响您的网站/应用程序的行为。因此,不用说您对查询字符串不信任,并在使用之前检查所有内容。当你检查它时,不要检查它有什么问题(这可能是一个无限列表),而是检查正确的东西。如果您的一项检查失败,那么您应该丢弃查询字符串数据,或将其视为可疑。如果您对查询字符串中的数据进行了加密或编码,即使用户的更改由于编码而无意义,但如果用户对其进行了混淆并且您盲目信任它,它仍然会产生意想不到的副作用。

    我在查询字符串中存储敏感数据的一种方法是不这样做;相反,我将存储敏感数据服务器端(在 Session、Cache 或数据库中的表中),然后我将在查询字符串中随机生成一个 key (通常是一个 GUID)来识别它,这样 URL 就会看起来像这样:

    http://myurl.com/myPage.aspx?secretKey=73FA4A5A85A44C75ABB5E323569628D3
    

    强制使用 GUID 相当困难,并且 GUID 冲突的可能性非常小,因此如果最终用户弄乱了查询字符串,那么他们最终什么也得不到。

    当我需要存储很多东西并且查询字符串开始变得太长时,这种方法也很有效 - 需要跟踪的数据可以保存在一个对象中,然后存储在 Session 或 Cache 中,并且再次使用 GUID 作为它的关键。

    关于asp.net - 在 ASP.NET 中使用查询字符串的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4867954/

    相关文章:

    asp.net - Telerik RadEditor HTTP POST VALUE 未更新(ASP.NET Web 表单)

    asp.net - 未知服务器标记 'ajaxToolkit:CalendarExtender'。

    c# - 为什么需要业务逻辑层?

    sql - 无法在 Visual Studio Express 2012 中创建新的 SQL 数据表

    asp.net - 从后面的代码更改asp.net页面的url

    php - 如何在 HTML 的 QueryString 中插入表单控件值?

    asp.net - VSTS 构建以空构建工件结束

    javascript - 正则表达式提取查询字符串变量和值

    javascript - 我可以将参数传递给客户端 HTML 页面吗?

    javascript - 将查询字符串从变量 append 到每个 URL