• ベストアンサー

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

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
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 会員数が少ないログイン後の会員エリアならば、Webアプリケーション脆弱性対策は過敏にならずとも?

    会員数が少ないログイン後の会員エリアならば、Webアプリケーション脆弱性対策は過敏にならずとも良いのではと考えたのですが、妥当な考えでしょうか? 会員サイトを制作しようとしておりますが、内製にするか外部プラットフォームを使うか?で思案しております。 プログラミングできる人間はたくさんいるので内製力はあるのですが(私はプログラミングはできません)、ただ、Webプログラミングでないプログラマーばかりなので、Webの方は不慣れです。 よって、Webアプリケーションの脆弱性対策の知識がまるで無い状況です。 XSS(クロスサイト・スクリプティング) CSRF(クロスサイトリクエストフォージェリ) SQLインジェクション OSコマンドインジェクション HTTP ヘッダ・インジェクション パス名パラメータの未チェック/ディレクトリ・トラバーサル バッファーオーバーフロー など、色々ありますよね。 このあたりのことを考えると、内製はやめて外部プラットフォームを利用するしかないのか、と思っていました。問題が起こっては大変なので。 Webアプリの脆弱性対策は日々新たな脆弱性が出てくるたびに対策を追加していかなければならないので大変そうで・・・・・ そういう中で気づいたのですが、Webアプリケーションの脆弱性を突く色んな方法がありますが、よくよく考えますと、会員エリアは会員しか入らないのだから、そんなに過敏に考えなくとも大丈夫なのではないか、と思い直したのです。 何せ会員数が少ないのです。 当初は10~30名程度、100名になるのもだいぶ時間がかかる感じですので。 会員しかもらえないログインID・パスワードでログインしたあとの会員エリアですから、ここの中の各入力フォームに悪いコードを入れる輩は会員か会員がID・パスワードを教えた第三者しかないわけで、本件のように会員数が極端に少ない場合なので、すぐ面が割れると感じる会員が悪いことをしづらいだろうと思ったのです。 質問ですが、 質問[1] 会員ログインページは非会員でも開けるので、このID・パスワードのinput textに対するWebアプリ脆弱性処置ができないことになる。 ここは会員だけ開くページでないため危険にさらされるわけだから、処置ができないと結局意味が無いでしょうか? 質問[2] ログイン後の会員エリアであっても、知識のあるクラッカー(悪いハッカー)からすればURLを知ることはお手の物であり、会員しか入れないエリアの入力フォームのWebアプリ脆弱性対策ができていないと、いくらログイン後のページであっても関係なくどんどん突かれてしまうのでしょうか? 以上です。 有識者の方の的確なお話を頂戴できればとてもありがたいです。 何卒宜しくお願いいたします。

  • パスワードを記憶するをチェックしてもパスワード入力画面が出る

    教えてgooで、ログインするときIDとパスワード入力する画面で、パスワードを記憶するをチェックしているのに、いつも投稿したりするときにパスワードを入力する画面が出てきて再度入力しなければなりません。なぜでしょうか?

  • パスワードをかける

    初めまして。初心者です。 社員番号、パスワードを入力し、個人のページに飛ぶような仕組みを作りたい のですが、 かなり苦労しています。 Requestの社員番号と、データベースの社員番号を比較し、 間違っていれば、エラーが出るようにし、 あっていれば、次のページに進むようにしたいのです。 見よう見まねで、↓のように作ってみたのですが・・・ これでは全然ダメだという事は分かるのですが、 どうしたらいいのか分かりません。 どうかお教えください。 データベース名:career_web テーブル:pass (社員番号とパスワードのテーブル) テーブル:plan (社員番号と、個人ページに載せたい情報(所属部署等) のテーブル) <% Set cn = Server.CreateObject("ADODB.Connection") cn.Open "career_web" sql = "SELECT *" sql = sql & " FROM pass" sql = sql & " WHERE (社員番号 = '" & Request("社員番号"))" On Error Resume Next Set rs1 = cn.Execute(sql) If (rs1("パスワード") <> (rs1(" & Request("パスワード")) Then Response.Write "<tr><td><font size='2'>正しいパスワードを入力し てください</font></td></tr>"   Else End If rs1.Close %> データベースの社員番号と、Requestの社員番号が 一致しない場合に、 ”正しいパスワードを入力してください” と出し、 一致した場合は blankのページに飛ぶような設定にしたいのですが、 ルールの定義の仕方がまったく分からないのです。

  • パスワードログイン画面を表示させないようにするには

    ASP.netを使ってWEBページを作成しています。 ページには、データベースと結合している、カレンダーコントロール、データソース、ドロップダウンリストなどが配置されています。 そのページを自分のパソコン上でテストしているときは何も問題なくそのページが表示されるのですが、テストサーバにアップしてページを表示すると、ユーザー名と、パスワードを入力するログイン画面が出てきます。 数回OKを押すとページが表示されます。(パスワードを入れなくても。。) そのログイン画面を出さないでページの表示をしたいのですが、どうやって何を設定すればいいのでしょうか? テストサーバーは、Windows2000、SQL Server 2005 ExpressEdition、IIS 5.0、.NET framework 2.0 です。 わかりづらい質問かと思いますが、ご不明な点はご指摘ください。 よろしくお願いいたします。

  • WEBログインシステムの構築について

    タイトルの件で質問させていただきます。 できるだけ堅牢なWEBログインシステムを作成したいのですが、 セキュリティ対策についてお教え願えますでしょうか? ネット各所で調べるとSQLインジェクションやCSRF、XSSなど いろいろ対策が必要なようですが、 大まかな流れとしては SSLでアクセス  ↓ ブラウザからID・パスワードを入力  ↓ PHPにてデータベース(MySQL)と照合  ↓ ログイン  ↓ ページ遷移はPHPのセッションをsecure属性をつけて行う という感じを想定しています。 ざっくりとしていますが、 この流れでセキュリティはどの程度保たれるものなのでしょうか? 後々はクレジットカード等も扱いたいと思っています。 いわゆるYahooオークションのようなログインシステムの場合 どのような流れになっているのでしょうか? また、ほかにも対策しなければいけない事など 教えていただけると助かります。 非常に抽象的な質問になりましたが よろしくお願いいたします。

    • 締切済み
    • PHP
  • SQLインジェクションについて質問です

    よくSQLインジェクションの攻撃で、改竄されたWEBページからウイルスを仕込まれた。 等という話を耳にしますが、この攻撃でどうやって改竄するのですか? 私が知ってる範囲だと、この攻撃では入力フォームに必ず条件マッチするようなSQLを入れて 情報を取り出したり、DBの情報を書き換えたり、情報を消したりくらいしか出来ない気がするのですが・・ あと、SQLインジェクションの紹介でよく見る、ログイン画面で「' 1=1;--」みたいな入力は誰でも思いつくと思うのですが、DBの情報を書き換えたり消したりするのって そのDBのカラム名とかが分からないとできないですよね。 攻撃者はこれらを推測して行っているのですか。 それともカラム名とかを知り得る攻撃手法があるのでしょうか。 また、SQLインジェクションとは関係ないのですがXSSという攻撃手法もありますよね。 こっちはクッキー情報を盗まれるのが一番大きな被害とありますが クッキー情報を盗まれると具体的に何がまずいのでしょうか。 サーバー側でクッキーに個人の名前とかメアドとかを入れてる場合があるという事ですか?

  • XPのログインパスワードについて

    お世話になっております。 自宅のPCですが、XPをしようしています。 ユーザー登録は1名のみで、パスワードの設定をしていませんでした。 先日ウィルス対策ソフトを入れたところパスワードの設定がないので、対策をとるようになって、パスワードを入力しまいた。 その後パスワードを何度入れてもログインできなくなりました。 ひょっとしたら登録したときのパスワードを間違えて入力したのかもしれませんが、見当がつきません。 ログインできないので、何も出来ないのですが、パスワードをこの状態で変更したり、ログイン出来る方法はありませんか? 大変困っています。教えてください。

  • パスワードの保存について

    こんにちは。windows mesenger をつかっているのですがこのときパスワードを入力してログインできるのですがその後新着メッセージのところをクリックしても直接メールページには行かずいつももう一度パスワードの入力の要求をしてきます。messenger にログインしたらそのまますぐにメールをチェックできるようにするにはどのようにすればいいのでしょうか? どなたかよろしくお願いします。

  • ユーザーパスワードのDBの格納について

    あるメーカーのソフトウェアを使用しており、Webからログインするときのユーザ名、パスワードがユーザーデータベースのテーブルに平文で格納されています。 そのソフトで使用しているデータベースはSQL Server 2008R2になります。 平文で格納されているのが気になっており、SQL Server 2008R2を使用してテーブルに格納するパスワードをハッシュ+ソルト+ストレッチングして格納すること仕組みとして可能かどうか気になっております。 もし仕組みとして可能な場合、Webからログインした際にユーザーが入力したパスワードをハッシュ+ソルト+ストレッチングして、テーブルに格納されているハッシュ+ソルト+ストレッチングしたパスワードと比較して認証を行うようにプログラミングは可能でしょうか。

  • ログインパスワード

    XPSP3HomeEditionでcontrol userpasswords2をファイル名を指定して実行で実行して 「ユーザーがこのコンピュータを使うには、ユーザー名とパスワードの入力が必要」のチェックをオフにし『適用』ボタンをクリックしましたがAdministratorを指定して適応してしまったみたいで 再起動後、設定したパスワードを入力してもログインできません。 セーフモードでもユーザー名がAdministratorになっていてパスワードを求められるのですが設定したパスワードでログインができません。 どうすればログインできるように修正できるでしょうか? 至急アドバイスお願い致します。