XSSは動的にWEBページを生成するサイトの脆弱性を利用し、悪意あるスクリプトを混入させ、サイトを訪れたユーザに不利益となる操作を実行させるセキュリティ攻撃。
根本的な原因は、ユーザ入力に対するエスケープの未実施、または不適切なエスケープである。WEBアプリケーションにおいて、ユーザ入力をそのままHTMLに出力するようなロジックを使用していると、入力値に記述されたスクリプトが動作することを許容してしまう。
対策として、ユーザ入力を疑い、適切なエスケープを施すことが重要となる。
以下Javaにおける対策例。
public class HttpUtility {
public static String escapeHTML(String str) {
char c;
StringBuffer returnStr = new StringBuffer();
int length = str.length();
for (int i = 0; i < length; i++) {
c = str.charAt(i);
if ( c == '<' ) {
returnStr = returnStr.append("<");
} else if ( c == '>' ) {
returnStr = returnStr.append(">");
} else if ( c == '&' ) {
returnStr = returnStr.append("&");
} else if ( c == '"' ) {
returnStr = returnStr.append(""");
} else {
returnStr = returnStr.append(c);
}
}
return new String(returnStr);
}
}
以上です。
0 件のコメント:
コメントを投稿