2016-10-20 9 views
0

httpセッションでユーザーが定義または指定できる値をセキュリティリスクに設定していますか?セッションでユーザー定義の値がセキュリティ上のリスクですか?

request.getSession().setAttribute(KEY, 
request.getParameter(usernameParameter)); 

これを解決するにはどうすればよいですか?

私の考えることの1つは、ハードディスク/メモリをいっぱいにする巨大な値ですが、それはちょっと離れているようです。文字列の長さを制限することでこれを解決できます。

+1

この時点でサイズについて心配するのは遅すぎます。要求にアクセスすると、その時点で属性がすでに解析され、メモリーに格納されています。 – talex

+0

@talexリクエスト属性は長時間保存されません。セッション属性は可能です。ユーザーが膨大な数のセッションを膨大な値で作成することは可能でしょうか?ヒープがいっぱいになり、メモリ不足のエラーが発生し、サーブレットコンテナ全体がクラッシュする –

答えて

0

最後に、私は文字列の長さをチェックすることにしました。

サーブレットコンテナ/アプリケーションサーバーがセッションを処理する方法を実装する方法に関するセキュリティ上の懸念がほとんどあります。これはコンテナごとに異なるようです。

1

それはあなたが何をするかによって異なります。セッションでユーザー定義の値を持つだけで、コンテナにバグがない限り、大きなリスクではありません。

たとえば、コンテナにはにバグがあるため、ユーザーがセッションに必要なものを置くことをお勧めします。

+0

元気でかす、私はセッションに行く価値をチェックすることにどれだけの距離を置くべきかについて少し混乱しています。私は文字列のサイズを制限するのは良い考えだと思います。しかし、私は内容を見ているべきですか? 1つのことは、しばらく前のシリアル化のバグです。サーブレット・コンテナは、ある時点(たとえば、シャットダウンのシャットダウンまたはクラスタ内のセッションの分散)でセッションを直列化/逆直列化する可能性があります。私はちょうどサイズを見て、ユーザーがセッションで "悪い"シリアル化コードを置くことは可能ですか? –

+0

「シリアル化コードが正しくありません」とは何ですか?私は、ユーザーがテキストをセッションに貼り付けることについて話していると仮定していました。それだけでSQLインジェクションのようなものを実現できるわけではありません。 – Kayaman

+0

はい、実際はテキストです。しかし、サーブレットコンテナによってシリアル化/処理されたり、コンテナ内の他の関連プロセスによって処理されたときに、「悪いこと」を行うテキストに「悪いもの」を置くことができるかどうかはわかりません。私はそれがすべて可能であるかどうかわからないので、私はこの質問をしたことに注意してください。私は他の誰かが知っていたと思った。副作用として、不正なシリアライゼーションコードは、不正なシリアライゼーションコードがユーザコードを実行する可能性のあるコモンズライブラリの特定のテクノロジの使用に関連していました。それは最悪のSQLインジェクションになります。 –

関連する問題