【问题标题】:Issue with sending Base64 encoded query string in aASP.Net在 aASP.Net 中发送 Base64 编码查询字符串的问题
【发布时间】:2011-01-05 16:17:10
【问题描述】:

我在 .Net 3.5 中创建一个网站,我将字符串转换为 Base64String 以通过查询字符串发送它。 Response.Redirect 适用于较小的字符串。但是如果原始字符串大小是1670,response.redirect会报错“Page can not be found”。

item 是下面代码 sn-p 中的字符串。

byte[] data = Encoding.Default.GetBytes(item); 返回 Convert.ToBase64String(data)

谁能帮忙解决这个问题?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    查询字符串不应该用于长值 - 虽然它取决于浏览器和 Web 服务器的最大安全长度是多少,但超过 2000 个字符肯定是不安全的,我会警惕依赖它高于 255。解决方案是改用 POST 请求,或者可能将数据保存在服务器上并在查询字符串中将密钥传递给它。

    【讨论】:

    • 让我问你这个问题,我正在使用 .ashx 文件将文件传递给客户端。在调用此处理程序时,我检查以确保该文件通过会话和数据库值归此客户端所有。客户端坚持查询字符串(数据库项 id)是加密的,问题是短的加密值有时会导致字符(例如加号)转换为空格。请指教。
    【解决方案2】:

    作为查询字符串发送的字符有限制 - 它因浏览器而异:

    http://support.microsoft.com/kb/q208427/

    我会将其保存到数据库并在另一端使用密钥检索它。

    【讨论】:

    • 您好,感谢您的解决方案。我还想在会话中保存查询字符串数据,因为我正在迁移旧站点,并考虑继续使用相同的方法。但是,在现有站点中,同样的东西可以正常工作。
    • 这真的取决于查询字符串中数据的敏感程度。如果它是常规的 ViewState 页面数据,您可以将其保存到 Session 并在目标页面的 init 方法中检索它吗?或者,您可以查看 Cross Page Posting msdn.microsoft.com/en-us/library/ms178139%28VS.90%29.aspx
    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    相关资源
    最近更新 更多