「ユーザーの入力を受け付けるシンプルな方法」の入力検証
「ユーザーの入力を受け付けるシンプルな方法」 ではとても単純なプログラムを書きました。 しかし、単純単純といっても、実はその裏で ASP.NET がかなり良いことを(勝手に)してれているので、 それを指摘しておこうと思います。
例えば、名前を入れるところに JavaScript を埋め込んで悪さをしようと試みたとします。
開発者がタグの入力を予想していないようなところでタグを入力されると、意図せずにデータ内に JavaScript が埋め込まれてしまうと、 プログラムが正常動作しなくなったり、あるいは、クロスサイトスクリプティングなどのセキュリティの問題が発生してしまいます。
こうした問題を避けるために、ASP.NET ではこうしたタグ入りのデータは危険なデータとして、デフォルトでカットしてくれます。
タグ入りの入力を許可して、自分でデータ検証するなら次のようにすれば OK です。
Web.config にて requestValidationMode を追加して...
<configuration> <system.web> <httpRuntime requestValidationMode="2.0" /> </system.web> </configuration>
Page ディレクティブにて validateRequest を false にします。
<%@ Page Language="C#" validateRequest="false" %> <html> <body> <form action="hello1.aspx" method="POST"> <p> 名前を入力してください: <input type="text" name="myname"> <input type="submit" value="OK"> </p> <% if(!String.IsNullOrEmpty(Request["myname"])){ Response.Write ("<p>こんにちは, " + Request["myname"] + "さん!</p>"); } %> </form> </body> </html>
これでタグ入りの文字も許可できるようになります。
ちなみに、先ほどの JavaScript 入りの入力を許可すると・・・
こんな風にやられてしまいます・・・。しっかり自前で入力検証することをお忘れなく!