• ベストアンサー

パスワードのチェック方法

webページなどで、ログイン名、パスワードを入力してログインするものを見かけますが、パスワードの入力チェックはどのようにしているのでしょうか? SQLインジェクションとかコマンドインジェクション等々の対策はどのようにしているのでしょうか?

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

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がると申します。 んっと…まず「パスワードの入力チェック」とは ・そのパスワードがどの程度「脆弱か」のチェック ・入力されたパスワードが正しいものかどうかのチェック ・入力されたパスワードをDBなどに保存する際のサニタイジング用のチェック のいずれを指しますでしょうか? で、まぁ、取り合えず一通り回答を。 脆弱性のチェックには、そういったチェックをするための単語辞書が(複数)ありますのでそれを組み合わせて行います。 パスワードが正しいかどうかをチェックするのは、まず ・まずデータを取り出してからプログラム中で文字列比較 ・SQL文のWHERE句に「パスワード=入力されたパスワード」の一文を追加してDBサイドで比較 の2種類に大まかに分類されるかと思います。 あとは ・保存されているパスワードが暗号化されているかどうか で、前後に暗号化処理とかが混ざってくると思います。 サニタイジングは「保存先」によって様々です。 簡単に書くと、コマンドインジェクション対策用のサニタイズとSQLインジェクション対策用のサニタイズは処理としては別物になるので。 ただ、共通して言えるのは「そのままでは問題がある文字を問題がない形式に変換する」です。 例えば、HTML出力用のサニタイズで>を>(実際には全て半角)にするような、そんなイメージです。 こんな感じで、期待されている回答になっておりますでしょうか?

tomoremo
質問者

補足

さっそくの回答ありがとうございます。 例えば、パスワードに”&”が含まれているとして、この文字を入力してDBに保存したい。といった場合はどのように処理すればよいでしょうか?

その他の回答 (2)

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.3

どもです。がるです。 んっと。「パスワードに”&”が含まれている」場合で「DBに保存」は、特に問題なく。 例えば…大変に脆弱なパスワードですが、 pass&wordという文字列であった場合。 単純に INSERT INTO table_name(id, pass) VALUES('id','pass&word'); でinsertできるかと思います。 これは、SQL文で、文字列のためにシングルクォートで囲んだ文字列内で&が特になにも意味しないため、です。 参考になりますでしょうか?

  • 0KG00
  • ベストアンサー率36% (334/913)
回答No.1

それは各サイトで異なると思います。 サーバに丸投げでアプリケーションゲートウェイで対応する場合もあれば、サーバに渡すまえにシングル・ダブルクォーテーションや<>記号をインタフェースでチェックするなど。

参考URL:
http://www.softek.co.jp/Sec/mod_security3.html