0

一連のレコードを一覧表示する管理ページがあり、各レコードの横にチェックボックスがあり、「アクティブ」ステータスに設定されています。各チェックボックスには、データベース内のレコードの ID に関連付けられた値があります。誰かが FireBug を使用した場合、チェックボックスの値を別の数値に簡単に変更でき、データベース内の間違ったレコードに影響を与える可能性があります。

これは管理ページに 1 人のユーザーしかいないため、このようなことが起こることについてあまり心配していません。また、彼は FireBug について何も知らないと確信しています。より一般向けのページ。

ここに私が現在持っているコードを示します。これにより、私が何をしているのかがわかります。

HTML + PHP..

<input type="checkbox" class="active" name="active<?php echo $id; ?>" id="active<?php echo $id; ?>" <?php if ($active == 1): ?>checked="checked"<?php endif; ?> value="<?php echo $id; ?>">

jQuery ajax..

$("input.active").click(function() {

var loader = $(this).prev().prev();

$(loader).css("visibility","visible");
// store the values from the form checkbox box, then send via ajax below
var check_active = $(this).is(':checked') ? 1 : 0;
var check_id = $(this).attr('value');

console.log(check_active);
console.log(check_id);

    $.ajax({
        type: "POST",
        url: "active.php",
        data: {id: check_id, active: check_active},
        success: function(){
            $(loader).css("visibility","hidden");

        }
    });
return true;
});

これがactive.phpです..

<?php

include("dbinfo.php");
mysql_connect($server,$username,$password);
@mysql_select_db($database) or die( "Unable to select database"); 

$active = mysql_real_escape_string($_POST['active']);
$id = mysql_real_escape_string($_POST['id']);

$addEntry = "UPDATE entries SET active = '$active' WHERE id = '$id'";
mysql_query($addEntry) or die(mysql_error());


mysql_close();
?>
4

2 に答える 2

2

アカウント情報を含む値を設定する必要がある$_SESSIONため、存在しないアカウントにアクセスしようとすると、それをキャッチして適切にフラグを立てることができます。アカウントの ID 番号だけで十分でしょう。これを隠しフィールドやユーザーが変更できる場所に配置しないでください。

于 2012-06-22T14:04:37.277 に答える
1

できません。

firebug は HTML を完全に制御できます。

しかし、あなたは HTML について心配しているのではなく、実際にはユーザーが active.php で奇妙なことをするのではないかと心配しています。

管理者がエントリのアクティブな状態を編集する権限を持っている場合、管理者は、許可されている方法で任意のエントリを編集できる必要があります。

悪意のある管理者が HTML の id を変更し、間違ったレコードでアクティブな状態を変更する可能性があると説明したセキュリティの問題は、あなたのように active.php ページに投稿要求を送信できるさらに悪意のあるユーザーと比較して何もありません。 ajaxスクリプトはそうしますが、彼のサーバーを使用して、任意のエントリのアクティブ状態を効果的に変更するためのアクセス権を持っています.

あなたがすべきことは、active.phpで何らかの認証を実行することです

SESSIONS または HTTP を使用しているかどうか

于 2012-06-22T14:11:34.123 に答える