phpでmysqlに接続する際、不正な文字をエスケープ等する必要があると知りましたが、フォームのタイプがテキストの場合だけではなく、任意の値が設定されているチェックボックスやリストボックスなどの場合でもエスケープ処理を行う必要があるでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/09/09 13:30:59
  • 終了:--

回答(5件)

id:JULY No.1

JULY回答回数966ベストアンサー獲得回数2472005/09/09 13:47:15

ポイント50pt

http://www.atmarkit.co.jp/fsecurity/rensai/webhole02/webhole01.h...

@IT:Webアプリケーションに潜むセキュリティホール(2) - Page1

基本的に必要です。


といのは、フォームデータを送るのはブラウザとは限りません。

ブラウザならリストボックスに無いデータ送られることは、基本的には、

ないですが、フォームデータを捏造して HTTP で送るプログラムは簡単に

作ることができます。ですので、各フォームのデータが HTML 上で

どんなデータタイプが指定されていても、送られてきたデータが

正しいか、問題ないかを php や cgi プログラム側で確認する

必要があります。

id:konorinori

ありがとうございます。

大変参考になります。

2005/09/09 21:21:25
id:kura_jet No.2

kura_jet回答回数42ベストアンサー獲得回数02005/09/09 14:10:03

ポイント50pt

なぜエスケープする必要があるのか、ということを理解する必要があると思います。


HTMLのソースを保存し、HTMLを改ざんしてからあなたの作ったプログラムにsubmitををすると、チェックボックスやリストボックスなどの場合でも不正な値で処理されてしまいます。

よって、受取る値は全てチェックを行うべきです。

id:konorinori

ありがとうございます。

2005/09/09 21:22:19
id:andi No.3

andi回答回数448ベストアンサー獲得回数02005/09/09 14:29:24

ポイント50pt

チェックボックスやリストボックスの場合でもエスケープの必要があります。

簡単に説明すると、作成者が<select name=”foo”><option>bar</option></select>としていても、悪意あるユーザは自分で<input type=”text” name=”foo”>と書いたHTMLを作成することも可能だからです。

(HTMLを作らずに投稿することも可能です)

id:konorinori

ありがとうございます。

2005/09/09 21:22:58
id:pmakino No.4

まきのっぴ回答回数355ベストアンサー獲得回数282005/09/09 14:31:57

ポイント50pt

http://www.netpub.tsuzuki.yokohama.jp/security/sec-0033.html

SQLインジェクションとは?

あります。

ユーザはフォームの内容を簡単に改変できるので、チェックボックスだろうとリストボックスだろうと、悪意があれば容易に任意のSQL文等に改変して送信されてきます。

フォームからパラメータとして送信されてくるデータは全て汚染されているという前提でプログラムを組むのが鉄則です。

http://www.hotfix.jp/archives/word/2004/word04-15.html

[HotFix Report] セキュリティ用語−SQLインジェクション(SQL injection)

その他SQLインジェクション関連の参考ページです。

id:konorinori

ありがとうございます。

2005/09/09 21:23:43
id:toptyan No.5

toptyan回答回数87ベストアンサー獲得回数02005/09/09 19:56:35

ポイント50pt

http://www.atmarkit.co.jp/fsecurity/rensai/webhole03/webhole01.h...

@IT:Webアプリケーションに潜むセキュリティホール(3)

たとえどんな場合でもSQL処理が発生する場合はエスケープ処理は施すべきです。

自分で作ったフォームがチェックボックスなどでも、誰かにSQLインジェクションできるフォームを作られたら目も当てられません。

エスケープ処理だけではなく、リファラーからデータ送信許可をするドメイン指定などやらなければならない処理は多いと思われます。

しかしながら、データの改ざんやデータを盗まれてからどうこう言うより面倒でもエスケープ処理やスパムなどの対策を事前に練ったほうが結果的にコスト安です。

また、SQLインジェクションだけではなくセッションやクッキーといったような処理を行う場合にも気をつけなければなりません。

セキュリティや嫌がらせ対策は大事ですね。

id:konorinori

ありがとうございます。

皆様大変ありがとうございました。

大きな間違いをせずに済みました。

皆様の回答を参考に

製作を進めていきたいと思います。

2005/09/09 21:29:41

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません