サニタイジングの重要性とは?

このQ&Aのポイント
  • WEBアプリケーションの開発において、サニタイジングは非常に重要な役割を果たします。
  • データベースへの検索機能がある場合、ユーザーが入力した検索キーによって悪意のある攻撃を受ける可能性があります。
  • サニタイジングを行うことで、不正な入力値からの攻撃を防ぎ、システムのセキュリティを強化することができます。
回答を見る
  • ベストアンサー

サニタイジングについて

以下の環境でWEBアプリケーションを作成しています。 java1.5 jsp2.0 eclipse3.3 tomcat5.5 javascript使用可能 struts等のフレームワークは使用していません。 現在作成している画面にはデータベースへの検索機能があるので 検索キーを入力することが出来ます。 テキスト入力欄が一つ、セレクトボックスが一つあります。 入力欄にスクリプト等が入力されると改ざんやなりすましの恐れがあるため WEBアプリの基本としてサニタイジングを行う必要があると伺いました。 このテキスト入力欄は半角10文字までの入力しかできないのですが、 入力欄がある以上、サニタイジングは行う必要があるのでしょうか?

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 現在作成している画面にはデータベースへの検索機能があるので > 検索キーを入力することが出来ます。 > テキスト入力欄が一つ、セレクトボックスが一つあります。 つまり、検索条件となる文字列を入力できるということですよね? これは、2パターンのサニタイズを行う必要がある場合があります。 入力できる文字数ははっきり言ってあまりアテにはなりませんね。 また、セレクトボックスなどから受け取る値も、選択肢以外来るはずがないという 考えから、完全に信用することも良くありません。 1つめは、DB操作を行う観点から・・・ 実際内部処理としては、検索文字列を利用してSQLを組み立てるはずです。 この時、プリペアドステートメントを利用したSQL発行方法を取っているなら 問題ありません。 文字列連結を行ってSQLを発行しているような仕組みの場合、そこに 『意図しないSQL文を発行させる文字列』が入っていたら、不正な挙動を 起こす為、DB問合せを行うタイミングで『DB問合せの為のサニタイズ』が必要です。 これは、いわゆる『SQLインジェクション』という脆弱性に対する対応です。 2つめは、表示を行う観点から・・・ 検索結果時に、検索した文字列を表示させるような場合、質問内に 記されいる通り、ブラウザが解釈できる全てのスクリプトが動作して しまいます。 それはJavaScriptに限った話ではありません。 その場合は、表示を行うタイミングで『表示の為のサニタイズ』が必要です。 これは、いわゆる『クロスサイトスクリプティング』という脆弱性に対する対応です。 これが悪用され、『クロスサイトリクエストフォージェリ』という脆弱性にも繋がります。 DBから見た時、Webページから見た時のいずれもですが、『外的要因によって 動的に変化する部分は常にサニタイズをする』クセは持っていて損はありません。 (要件によって例外はありますが)

superss28
質問者

お礼

>この時、プリペアドステートメントを利用したSQL発行方法を取っているなら >問題ありません。 プリペアドステートメントを使用した検索を行っています。 (特別サニタイジングを意識したわけではありませんでしたが) >表示を行うタイミングで『表示の為のサニタイズ』が必要です。 こちらはサニタイジングを行っています。 DBに特殊文字が入ることはないのですが念のために行っていました。 ご回答ありがとうございました。

関連するQ&A

  • サニタイジングについて

    今、JSPでサニタイジングを行うプログラムを作成しています。 ただ、JSPではなくJAVAで作りJSPに接続しようとしていますが、 一様、JSPで入力したデータをサーブレットで生成したHTMLに表示は できたのですが、HTMLを生成するのではなくJSPとJSPの間に入る フィルターとして扱いたいのですが、いまだによく分からないのです。 そこで、少し聞きたいのですが、どのようにしたらいいのか 教えてもらえませんか?プログラムはサイトで探してきたのを改造して 使っていますが、まだ、JSP、JAVAの知識が浅くよく分かりません。 教えてもらえるならさいわいです。

  • Eclipse WTP、Strutsについて

    Eclipse WTPを使い、Webアプリを作っています。 いくつか質問させて頂きます。 1、Eclipseについてですが、なぜか下記環境でEclipseが頻繁に停止しています。なぜでしょうか?また、解決策をお教えください。 2、下記環境でWebアプリを作り、参照JREをJDK5、コンパイラーを5.0準拠に換え、サーバーを開始すると、バージョンエラーみたいなエラーが返されてしまいます。なぜでしょうか?また、解決策をお教えください。 3、Strutsについてですが、プロパティーファイルに日本語を入れて、保存するとエラーが返されます。(Struts-blank(不確か)をそのままコピーして作成し、Application.propertiesに入力)なぜでしょうか?また、解決策をお教えください。 ■環境 Eclipse:3.3 アプリケーションサーバー:Tomcat6.0 フレームワーク:Struts1.3.8 参照JRE:JDK6

    • ベストアンサー
    • Java
  • どんなフレームワークが良いでしょうか?

    どんなフレームワークが良いでしょうか? Java言語を用いた画面が4つぐらいのWebシステムを作成しようとしています。 下記の環境はほぼ決まっています。 OS:Windows XP 言語:Java 1.6 APサーバ:Tomcat 6.0 開発ツール:eclipse 3.4 DB:HiRDB 8 サーブレットとJSPについてはある程度知識がありますが、 フレームワークについてはほとんど知識がありません。 (Struts1のシステム開発を少しだけ手伝ったことがあるぐらいです。) データベースアクセスについてもプログラム内にSQL文を自分で記述する 初歩的なやり方でしか経験がありません。 出来ればフレームワーク初心者でも仕組みがわかりやすいフレームワークで 作成しようと考えています。 フレームワークの組み合わせによってはXMLだらけになって 管理が大変だという記述も見ました。 フレームワークを知らない自分がいろいろ試すより、 これまで皆さんが用いた様々なフレームワークについてご意見を頂きたいです。

    • ベストアンサー
    • Java
  • ◆Struts サンプルプログラムのURLがわかりません。◆

    Struts初心者です。教えて下さい。 http://www.stackasterisk.jp/tech/java/strutsSec01_03.jsp#5 上記サイトで勉強中にいきずまってしまいました。初歩的質問で申し訳御座いませんが教えて下さい。 4.Strutsアプリケーションの作成 で記載されている通りに jspファイル、javaファイルを配置し、struts-configファイルも記載されているようにしました。 画面を表示させたいのですが、どのような URLにアクセスすれば画面が表示されるのでしょうか・・?? web.xmlの中に urlマッピングする情報を追記したり、struts-configに追記したりする必要がありますのでしょうか・・・?? servletだと web.xmlに、<servlet-mapping>要素に<url-pattern>を定義してURLが判断できたのですが・・・・ 以下のようなURLでアクセスしているのですが、TomcatがHTTPステータス 404を表示します。。tomcatの再起動なども行なっております。 http://localhost:8080/struts-blank/jsp/loginForm.jsp 根本的に理解できていないと思うので、参考になるサイト、書籍などもあったら教えて下さい。 環境 WinXP,JDK1.5,Eclipse3.2,Struts1.2,Tomcat5.x 宜しくお願いします。

  • tomcat、apacheにてJSPが表示されない

    http://localhost:8080/ と入力したときにtomcatの画面がでるので tomcatの設定はできていると思っているのですが eclipseでJSPを作成し、 \Program Files\apache-tomcat-6.0.13\webapps\bihinkanri\WEB-INF にJSPファイルを置き、 http://localhost:8080/bihinkanri/Itiran.jsp とURLに入力したのですが HTTPステータス404が出てしまいました。 なぜでしょうか・・・。 初心者で原因がわかりません・・。 お願いします。

  • JSPとサーブレット

    こんにちは。 webアプリを開発中に、 JSPを作成したあと web.xmlを作成しました。 そうしたら今まで、ページを 表示できていたのにできなくなってしまいました。 どうしてでしょうか? 開発はトムキャットとeclipseを使用しています

  • ★Eclipse + Strutsを使用した開発について

    Eclipse 3.0.x Struts 1.2.4 Tomcat 5.0.28 Apache 2.0.52 でWebアプリの開発を行おうとしています。 EclipseとStrutsを組み合わせた場合の 参考になるサイト等はありませんか? EclipseにStrutsのプラグインで良いものがあれば ご教授願います。 また、Eclipseを使用せずにStrutsの開発を行う 場合に良い開発環境があればこちらもご教授願います。

  • strutsについて

    eclipseとTomcat、strutsの勉強をしているのですがjspをブラウザからhttpで実行すると 「タグ "html:errors" にタグハンドラクラス "org.apache.struts.taglib.html.ErrorsTag" をロードできません」 とエラーがでてしまいます。 html:errorsをコメントアウトして実行すると、その次に使用しているhtml:formを使用している箇所でエラーになってしまいます。 struts.jarは関連させていますし。tblも関連させていると思っています。いろいろ検索してみたのですが対処方法がわかりません。 <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %> これをjspに記載していますが、WEB-INF配下にtldファイルがあれば特に問題ありませんよね?ファイル構成も大丈夫だとは思うのですが。 有識者がおりましたらご教授お願いします。情報が不足しているので指摘をお願いします。

  • eclipseとtomcatで404エラー

    ----------------------------------- Windows7 Ultimate eclipse Indigo tomcat 5.5 ----------------------------------- eclipseとtomcatを使用して、JSPを動かそうとしています。 eclipseとtomcatとJDKはC:\pleiadesの下に配置しています。そしてワークスペースは C:\workspace\Testとして登録しています。(ちなみに動的Webプロジェクトで作成しています) 既存のJSPファイルをeclipse上で右クリックして、サーバーで実行とすると、eclipseの画面上にきちんと表示されるのですが、その後、そこで動いていたtomcatを終了させて、eclipseの上部にあるtomcatのアイコンをクリックし、その後、通常のブラウザで表示させようとすると404エラーが出てしまいます。(http://localhost:8080/Test/test.jsp) そもそも右クリック→実行の際に起動するtomcatとeclipse上部にアイコンで存在するtomcatはどう違うのでしょうか? そしてどうすれば、上部のtomcat起動からブラウザで直接JSPを呼び出すことが出来るのでしょうか? 申し訳ありませんが、ご教授お願い致します。

    • ベストアンサー
    • Java
  • JSPとフレームワーク

    初歩的な質問ですが、素通りせず回答お願いします。 JSPでWebアプリケーションを作成するため JSPの勉強をしようと考えていますが、StrutsやHibernateなどの フレームワークの勉強も必要でしょうか? ※ちなみにJava初心者です(余談)。 どなたかご教授ください、お願いします。

    • ベストアンサー
    • Java