シックボックスjQuery コンポーネントを使用してポップアップページを開くアプリケーションがあります。
そして、私はこのようにクエリ文字列で私のパラメータを渡します:
<a id="btnShowPopup6" runat="server" class="thickbox" href='<%#"RollUp.aspx?TCode="+Eval("Code")+"...."+"&AR=1"+"&TBiframe=true&height=530&width=750"%>'>
これが唯一の選択肢です。このメソッドでセッション変数を使用したり、パラメーターをポストしたりすることはできないため、クエリ文字列を使用するだけです。
クエリ文字列をセキュリティで保護して、ユーザーが操作できないようにするにはどうすればよいですか?クエリ文字列を暗号化する最良の方法は何ですか?
ユーザー提供の値をeval()
呼び出しに入れることは恐ろしい考えです。これは本質的にリモートコード実行の脆弱性に相当するためです。コードが次のようになっているとしましょう...
var data = eval(webRequest.Parameters["p"]);
これをp
パラメータに入れると想像してみてください...
System.IO.File.Delete(@"c:\windows\system32\ntoskrnl.exe");
おっと!カーネルを削除しました。
ここではエスケープをいじる必要はありません-これは根本的に壊れた概念です。
パラメータの暗号化は、物事を複雑にするだけです。正しいアプローチに進み、言語が設計されているようにセッション変数を使用します。
pdate:明確にするために、私は一般的な意味でeval()について話しています。 C#のデータコントローラーでEvalバインディングメソッドを使用している場合、ユーザーパラメーターがそこにない限りOKでなければなりません。 SQLインジェクションを必要とせずに、コードがデータベースから任意の値をダンプする可能性があります。