【发布时间】:2017-10-27 15:08:36
【问题描述】:
我有一个页面,有一个按钮可以生成这样的链接。
private string GenerateLINK(string NameID)
{
string NameID= ds.Tables[0].Rows[0]["FName"] + " " + ds.Tables[0].Rows[0]["LName"];
string sQS = ID+ "|" + ClientName;
var xCrypto = new CryptoServer();
string Vector= null;
string sEncrypted = null;
xCrypto.Encrypt3DES(sQS, ref sEncrypted, ref Vector);
string sURL = sEncrypted + "#######" + Vector;
sURL = Server.UrlEncode(sURL);
sURL = "https://www.Page.aspx?s=" + sURL;
return sURL;
}
然后将其发送给单击它并转到页面的用户。 现在的问题是我使用这样的链接并对其进行 DCode。
private void DecryptQuerystring()
{
var sQS = Request.QueryString["s"];
sQS = Server.UrlDecode(sQS);
var idelim = sQS.IndexOf("###X####", StringComparison.Ordinal);
var sIv = sQS.Substring(idelim + 8);
sQS = sQS.Substring(0, idelim);
var xCrypto = new ICECrypto.CryptoServer();
sQS = xCrypto.Decrypt3DES(sQS, sIv);
string sID = sQS.Substring(0, sQS.IndexOf("|"));
studentID = sID;
Name = sQS.Substring(sQS.IndexOf("|") + 1);
Welcome.InnerText = "Welcome " + sQS.Substring(sQS.IndexOf("|") + 1);
}
问题是当用户到达那里时,如果他在链接中输入任何单词,它会破坏显示服务器错误的整个页面。我希望用户不能编辑链接在其中插入任何东西。有什么线索吗?提前致谢!
【问题讨论】:
-
您的服务器应该通过向用户返回 404 错误代码来优雅地处理未知 url。如果您的解码由于输入错误而失败,您应该优雅地处理它并向用户返回 404。
-
Riv 我不认为您明白了 404 代码仅在嵌入的链接不是您网站的页面时才有效我的链接有效,其加密存储的值如果用户在该查询字符串中键入任何不是有效的加密值的东西,我正在谈论的查询字符串就是它中断的地方。感谢您的回复