1

register.php ファイルには、ユーザー名 (電子メール、パスワードなど) 検証用の JavaScript コードが含まれていました。

たとえば、Javascript には次のようなコードが含まれています。 var url = "_password_confirmation_validator.php";

_password_confirmation_validator.php は、入力フォーム (register.php) から値を取得し、入力を検証します。

register.php のソースを表示する人は誰でも、サーバー上にファイル _password_confirmation_validator.php が存在することを確認できます。

_password_confirmation_validator.php に直接移動すると、Password is empty のようなメッセージが表示されます。

_password_confirmation_validator.php にヘッダー リダイレクトを配置した場合 (誰かがファイルに直接移動した場合にリダイレクトするには、ajax は機能しません)。

また、_password_confirmation_validator.phpに次のような条件を配置すると、ajaxは機能しません

if ($_POST['register'] ){

フォームの入力フィールドは、input onkeyup= のようなものです (そのため、onkeyup ajax が検証を開始します)。

質問は

1) _password_confirmation_validator.php の条件を記述して、誰かが直接ナビゲートした場合に何も表示しないようにするにはどうすればよいですか?

2) 誰かがビュー ソースでファイル名を見ることができる場合、セキュリティ上の問題はありますか? はいの場合、解決策は何ですか?

4

2 に答える 2

1

Ajax ヘッダーを検出する:

if(empty($_SERVER['HTTP_X_REQUESTED_WITH'])) {
  die("");
}

しかし、熟練したハッカーは、そのようなヘッダーをリクエストに追加するだけであることに注意してください。

別の方法として、ランダムなコードをページに配置してリクエストと共に送信し、毎回コードをリセットしてから新しいコードを生成する方法があります。

アップデート

これを行う最も適切な方法は、追加のランダム (時間ベース) パラメーターをページに追加することです。または単にキャプチャ/再キャプチャを使用して

于 2013-02-28T12:28:49.007 に答える
1

サーバーは通常のリクエストと AJAX リクエストを区別できないため、誰かが直接ナビゲートした場合にページを変更する方法はありません。ハッカーは、リクエストのヘッダーを簡単に操作できます。

2 番目の質問については、公開されない可能性のある情報を AJAX 経由で送信しないことをお勧めします。その場合は、パスワード システムの使用と HTTPS の使用を検討してください。

于 2013-02-28T12:32:40.130 に答える