0

したがって、Imは実際にはバックエンド開発者ではありませんが、基本的なパスワードログインを開発する必要があります。(まったく不合理な)クライアントは、パスワードの入力だけが必要だと具体的に言っています。ユーザー名やその他の情報を渡すことはできません。ユーザーがいないため、スクリプトに直接コーディングしたパスワードは1つだけです。次のようになります。

$password = $_POST['password']

if ($password == 'mypass') {

do something....

}

これはある種のインジェクションハックに対して脆弱ですか?他に心配すべき巨大なセキュリティホールはありますか?

4

4 に答える 4

3

これはある種のインジェクションハックに対して脆弱ですか?

いいえ、他に何も注入していないためです。

他に心配すべき巨大なセキュリティホールはありますか?

  • エントロピーは非常に低く、攻撃者がランダムなパスワードを自動的に試すだけで、それほど問題なく侵入できるはずです。おそらくご存知でしょう。
  • サーバーが侵害されたり、ソースコードが明らかになったりした場合、ハードコードされたパスワードが明らかになり、すぐに使用できるようになります。少なくともそれを防ぐために、それをソルトしてハッシュすることができます。
于 2012-04-30T05:10:28.477 に答える
1

いいえ、コードは脆弱でも悪用可能でもありませんが、改善することはできます。

パスワードをハッシュし、==演算子の代わりにsrtcmpを使用することをお勧めします。

于 2012-04-30T05:12:34.927 に答える
1

これが攻撃にさらされているシナリオがありますが、これはあなたが苦しむかもしれないし、苦しむかもしれないかもしれません。

この例では、ユーザーがパスワードを投稿する必要があり、重要なことに、サーバー側のセッションを維持していることを示していません。セッションが使用されていない場合、これは、このコードを含み、パスワードが投稿されているページのみが保護されることを意味します。

複数ページのWebアプリケーションを開発し、このパスワードチェックコードをすべての機密リソースに配置していない場合、認証バイパス攻撃に対して脆弱になります

例:サイトに次のページがある場合

  1. http://example.com/ public
  2. http://example.com/admin/ private&protected
  3. http://example.com/admin/users.php プライベートで保護されていません

悪意のあるユーザーが/admin/users.phpに直接アクセスして、認証メカニズムを完全に回避する可能性があります。

于 2012-04-30T09:05:10.053 に答える
0

dbテーブルへの格納やハードコーディングには、可能な限り常に一方向のハッシュを使用してください。クリアテキストパスワードをハードコーディングする代わりに、パスワードのMD5ハッシュ値をハードコーディングできます。次に、ユーザーからの入力のハッシュを計算してから、両方を比較します。そうすれば、誰かがあなたのコードを盗んだり、それを使ってパスワードを漏らしたりする恐れがあります。

于 2012-04-30T09:15:03.803 に答える