前提・実現したいこと
HTMLエンコード処理をしたい。
発生している問題・エラーメッセージ
エンコード処理についての質問です。 これは市区町村を入力するページなのですが、サーブレットの中で <script >alert("再起動します");</script>のようなコードをブロックするためにサニタイジングを行いたいです。 よろしくお願いします。
該当のソースコード
java
1import java.io.*; 2import javax.servlet.*; 3import javax.servlet.http.*; 4 5public class AddressServlet extends HttpServlet { 6 private String htmlencode(String original){ 7 StringBuffer encoded = new StringBuffer(); 8 for (int i = 0; i < original.length(); i++){ 9 char c = original.charAt(i); 10 switch (c){ 11 case '<': 12 encoded.append("<"); 13 break; 14 case '>': 15 encoded.append(">"); 16 break; 17 case '&': 18 encoded.append("&"); 19 break; 20 case '\"': 21 encoded.append("""); 22 break; 23 default: 24 encoded.append(c); 25 } 26 } 27 return encoded.toString(); 28 } 29 30 public void doPost(HttpServletRequest request, HttpServletResponse response) 31 throws ServletException, IOException { 32 request.setCharacterEncoding("UTF-8"); 33 String strCity = request.getParameter("city"); 34 response.setContentType("text/html; charset=UTF-8"); 35 PrintWriter out = response.getWriter(); 36 out.println("<html><head><title>結果出力</title></head><body>"); 37 out.println(strCity);//ここにHTMLエンコード処理 38 out.println("</body></html>"); 39 } 40} 41 42htmlコード 43<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 44<title>住所表示</title></head><body> 45 46<form action="/address/AddressServlet" method="POST"> 47 市町村= 48 <input type="text" name="city" size="10" /> 49 <input type="submit" value="送信" /> 50</form> 51 52</body></html> 53
試したこと
Webサイトを色々回って調べましたが、自力で解決出来ませんでした。
補足情報(FW/ツールのバージョンなど)
Netbeansを使っています。
ご質問内容がどうも意味不明なのですが、
> <script >alert("再起動します");</script>のようなコードを入力するとアラートが出てしまうのを止めたいです。
alert()を呼び出しているのであるからアラートが出るのは当然なのでは。それとも何らかの文法や実行時のエラー、警告が出ているということなのでしょうか。
意味不明な質問になってしまっていてすみません。
このコードを実行すると市区町村を入力できるサイトが立ち上がります。
その市区町村を入力する場所に<script >alert("再起動します");</script>のようなアラートを入力するとサイト全体に警告が出るので、そういった悪戯を防止するためにHTMLのエンコード処理をしたいという意図です。
分かりづらい説明で申し訳ありません。
コメントの返信をいただいたものの、提示されているコードには市区町村を入力するサイトのURLなどありませんし、正直、私にはいまだに状況が良く分かりません。HTMLやフォームについて、セキュリティに関わるサニタイジングの話でしょうか。質問文(<このコメント欄ではありません)を修正し、適切な情報をより詳細に書けば回答をいただけるかと思います。
返信ありがとうございます。
サイトのURLではないのですが、htmlのソースコードを追加しました。
サニタイジングのことであっております。
初心者なのでアドバイス頂けて助かりました。
ありがとうございます。
> 色々回って調べました
これを明かしていただかないと、同じ内容しかもらえないかもしれませんよ。
htmlencodeを呼んでないけど・・・
あなたの回答
tips
プレビュー