【发布时间】:2015-04-02 01:21:31
【问题描述】:
我们有一个用于 https 的应用程序,因此正在传输的数据受到保护(或者我应该说根据需要受到保护)我想了解有关保护/隐藏(或类似)queryString 值的信息。它是一个 jQuery/Javascript 前端,通过经典的 ASP Web 服务使用 GET 和 POST 与数据库进行通信。 Web 服务将 JSON 发送回客户端。
我意识到可以更改前端代码,因此所有内容都使用 POST 传递,但是应用程序已完成并经过测试可以部署。在查询字符串中传递了一些不应该传递的键值。是否有可能使查询字符串值无法被检查或嗅探。 URL 和查询字符串一起将提供到原始 JSON 的直接链接。我们想防止这种情况发生。也许有一些可以探索的 jQuery/AJAX 特性。也许是一些服务器 IIS 级别的策略?我猜嗅探发生在请求获取 Web 服务站点所在的服务器之前,因此某些服务器/IIS 级别的策略不是一种选择。
任何想法/建议都会很棒,谢谢。
【问题讨论】:
-
url中的查询字符串值不能隐藏。它们实际上只是一个网址。您可以仅使用帖子来隐藏它,但就像您说的那样,您可以使用浏览器开发工具来获取数据。与做会话变量一样。 Id 值绝不应该是如果更改可能会导致问题的东西。如果传入 Id,则后端应检查当前用户是否可以看到此数据。如果不是,则 404 页面或重定向。这是解决问题的正确和最简单的方法。
-
谢谢。我不认为这是真的可能。
-
“隐藏”查询字符串值的唯一方法是执行 ajax 类型请求,或者 url 保持半常量的 iframes/frames。两者都会给你漂亮的 url,但代价是书签被破坏,任何打开过开发者工具的人都能够准确地看到正在发生的事情。底线,如果它的敏感信息不将其放在查询字符串变量中,而是放在会话中(基于 db 或 cookie)。
标签: javascript jquery ajax asp-classic