-2

ログインに成功すると、ユーザーは menu.php にリダイレクトされます。これは、パスワードで保護されたアクション (アクティビティ) を実行する唯一のファイルです。

ユーザーが新しい会社を追加する必要がある場合は、リンクがあります

<a href="menu.php?add_new_company" title="">Add new company</a>

ファイルの下にコードがあります

if ($_SERVER['QUERY_STRING'] == 'add_new_company') { echo 'Input form' }

これは安全ではなく、悪い設計であることを読みました。ただし、誰かがそれをハッキングする方法を理解していません。セキュリティ上の問題がある場合は、アドバイスをお願いします (誰かがハッキングする方法)?

アップデート

ログインに成功すると、トークンが作成され、mysql に記録されます。menu.php で、トークンが設定されているかどうかを確認します。設定されている場合は、mysql に接続し、存在するかどうかを確認します。設定されていないか、mysql に存在しない場合は、ログインにリダイレクトします。

4

2 に答える 2

2

menu.php?action=add_new_companyログインしているかどうかに関係なく、どこにいても誰でもアクセスできることに注意してください。ページで実際にセッション検証を行うのはあなたの呼び出しmenu.phpです。

その一部、あなたが投稿したものから、そのリクエストの出力がユーザー入力に依存しない限り、実際に安全でないものや悪用される可能性があるものは何もありません(そうでなければXSSがあります)。

それは整形式のクエリ文字列ではないため、設計が悪いだけです。クエリ文字列にはkey=valueリストが含まれていると想定されており、そのように使用することは意図されていません。

私は次のようなもので行きます:

<a href="menu.php?action=add_new_company" title="">Add new company</a>

と:

if ($_GET['action'] == 'add_new_company') { echo 'Input form' }
于 2013-03-31T09:20:59.887 に答える
1

私の理解が正しければ、誰かが電話menu.php?add_new_companyをかけ、パスワード保護なしで新しい会社を作ることができますか? メニューだけパスワード保護?

ユーザーが以前にログインしたことがあり、URL を知っているか推測した場合、パスワードなしで (再度) 認証できるため、これは非常に安全ではありません。

OWASP セキュア コーディング プラクティス、特に認証とパスワード管理のセクションを参照してください。

于 2013-03-31T09:24:54.217 に答える