私は、HTML入力からユーザー入力を受け取り、さらに処理するためにそれをtomcatサーバーに送信するWebアプリケーションに取り組んでいます。regexチェックを実行する際にHTMLエスケープが必要ですか?
現在、私のワークフローは次のようになります。
クライアント
JS - > HTML入力を取る - >正規表現チェックを行う - >成功し場合 - > $ .post(...)
はサーバー
は、ポストデータを受け取る - >正規表現チェックを行う - >成功し場合 - >プロセスデータ
私understandigからが、これは問題ないはずですし、HTMLエスケープ
が、まだ許可されていない何かにこそこそする方法があることができれば、私は思っていたを行う必要はありません。
さらに思考:私の.javaで
public void doPost(HttpServletRequest request, HttpServletResponse response){...}
方法が送信されたパラメータを受け取るために、次のないファイル:
String post_param_1 = request.getParameter("param_1");
このその特定のパラメータに対して正規表現チェックが実行される前に発生しなければなりません。
質問#1:これは、攻撃者がJavaコード内で意図しない振る舞いをする「オープンウィンドウ」になる可能性がありますか?攻撃者はいない(たとえば)正規のウェブサイトを通じて、別々のツールを使用して、ポストの要求を送った可能性が
質問#2:
request.getParameter("param_1").matches(regex_string)
:Q#1は、真であることが判明し場合のようなものをやってできました
これを回避できますか?
質問#3:私のアプローチが十分であれば、somepointでHTMLエスケープを行うのが望ましいですか(おそらく、JSの入力をグライングしてから正規表現を実行するまで)。
最後に、このトピックに関するご意見やご提案はありますか?または、クライアントやサーバーの正規表現チェックが多すぎるようなものがありますか?仮定すると、
よろしく Alkahna
THXを行う場合、適切SQLインジェクションを防ぐために必要な「プレーンテキスト形式で保存する」と言います。一般的にエスケープするには:私は入力を受け取り、サーバー側で処理します。テキストの表示はすでにエスケープして処理されます。 '1'では一般的に注射攻撃を目指していた(JSも同様)。それは私がここで安全な側にいたい理由です。 '2)'のために、あなたは正しいです、私は現在自分のコードでやっていることを現時点で行います。したがって、私のアプローチは誤入力(正規表現)を防止するのに十分であり、その自動注入攻撃も同様であると結論づけることができます。 – Alkahna
はい、テキストをユーザーに表示するときにエスケープするだけで、JS注入を防ぐことができます。 – megaflop