0

index.phpajax.js、およびprocess.php (AJAX データを取得する場所) があります。

私はこのようにAJAXを使用しています:

var = $('user_id').val();

$.ajax({
    url     : "somefile.php",
    method  : "GET",
    data    : {'user_id' : user_id},
    cache   : false,
    success : function(data) {
          // do something with "data"
    }
);

PHP ファイルから受け取った User_id:

    <input value="<?php echo $user_id; ?>" id="user_id" />

セキュリティを強化するために何をする必要がありますか?

4

5 に答える 5

0

ユーザーIDをクライアントに提供しないことをお勧めします。代わりにセッション変数に保存できますか?

于 2013-04-30T14:20:16.537 に答える
0

この user_id が、ログインしているユーザーに関連する機密情報を取得するために使用されている場合、セキュリティ上の欠陥のように聞こえます。

セッション変数から user_id を取得する必要があります

于 2013-04-30T14:20:50.050 に答える
0

「user_id」をクライアント HTML に入れてサーバーに送り返すのは得策ではないと思います。クライアントから送信されたデータをさらに検証する必要があります (いくつかのチェックとフィルタリングを行います)。

クライアントに送信する代わりにセッションを使用することをお勧めしますが、同時に 2 つ以上のデータを編集 (マルチタブ) すると問題が発生するため、セッションといくつかのトリックを使用する必要があります。

この例では、本物user_idはクライアントに送信されません。

index.php:

session_start();
$edit_session_id = md5(uniqid() . microtime(true));

$_SESSION['edit_' . $edit_session_id] = $user_id;

ajax.js:

var edit_session_id = $('#edit_session_id').val();

$.ajax({
    url     : "process.php",
    method  : "POST",
    data    : {'edit_session_id' : edit_session_id},
    cache   : false,
    success : function(data) {
          // do code
    }
);

プロセス.php:

session_start();

$edit_session_id = $_POST['edit_session_id'];
if(!isset($_SESSION['edit_' . $edit_session_id]))
{
    die('Invalid edit session, please go back & refresh');
}
$user_id    = $_SESSION['edit_' . $edit_session_id];

// Do something with user_id

//Clear the editing session
unset($_SESSION['edit_' . $edit_session_id]);
于 2018-01-25T10:38:03.973 に答える