javaのURL文字列またはフォームパラメータをエンコードする方法

これは、URLまたはフォームパラメータをエンコードすることを常にお勧めします。プレーンフォームパラメータはクロスサイト攻撃、SQLインジェクションに対して脆弱であり、Webアプリケーションを予期しない出力に導く可能性があります。 URL文字列またはフォームパラメータは、 `URLEncoder`クラスのstaticエンコード(String s、String enc)メソッドを使用してエンコードできます。

たとえば、ユーザが次の特殊文字を入力し、Webアプリケーションがエンコードを処理しないと、クロスサイトスクリプト攻撃が発生します。

<![CDATA[<IMG SRC="  javascript:document.vulnerable=true;">]]>

文字列をエンコードするために URLEncoder`を使用し、エンコードされた文字列をデコードするために URLDecoder`を使用する例

package com.mkyong;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class testEncode {

  public static void main(String args[]) {

    try {

    String url = "<![CDATA[<IMG SRC=\"  javascript:document.vulnerable=true;\">]]>";

    String encodedUrl = URLEncoder.encode(url, "UTF-8");

    System.out.println("Encoded URL " + encodedUrl);

    String decodedUrl = URLDecoder.decode(url, "UTF-8");

    System.out.println("Dncoded URL " + decodedUrl);

    } catch (UnsupportedEncodingException e) {

        System.err.println(e);

    }
    }
}

結果

Encoded URL %3C%21%5BCDATA%5B+%3CIMG+SRC%3D%22+%26%2314%3B+
javascript%3Adocument.vulnerable%3Dtrue%3B%22%3E+%5D%5D%3E
Dncoded URL ]]>

すべての脆弱性攻撃を防ぐために、URL文字列とフォームパラメータを常にエンコードすることを覚えておいてください。

リファレンス

Javadoc]

リンク://タグ/エンコード/[エンコード]リンク://タグ/java/[java]リンク://タグ/url/[url]