2017-10-27 15 views
0

私はページの中にこのようなリンクを生成するボタンがあります。リンクを編集できないようにするasp.net c#Page

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); 

} 

ユーザーが取得するときに問題があると、彼はリンクに任意の単語を入れた場合には、サーバーエラーを示すページ全体を壊します。私は、リンクを編集することができないようにする必要があります。どんな手掛かり?前もって感謝します!

+0

を置きます。入力が悪いためにデコードに失敗した場合は、正常に処理して404をユーザーに返す必要があります。 – Riv

+0

Riv私は、404コードがインターリンクされたリンクがあなたのウェブサイトのページでない場合にのみ機能する点ではないと思います。私のリンクはその値が有効です。ユーザーはそのクエリ文字列内で、壊れている有効な暗号化された値ではないものを入力します。お返事をありがとうございます –

答えて

1

これは面白いですが、私は自分の質問に答えているかもしれません。 だから私はのQueryStringの復号化を(やって)私はあなたのサーバーが正常ユーザーに404エラーコードを返すことによって、未知のURLを処理すべき単語で

Try { 
    // Do the Decryption here 
} 
Catch(Exception ex) { 
    // if any thing goes wrong in that Try it will hit here and then i will show error 404 
} 
関連する問題