0

ユーザーストーリー:

私は Web アプリケーションの管理者であり、Web アプリケーションの別のユーザーを削除する必要があります。ユーザーのリストからユーザーを選択し、後続のページからユーザーを削除できます。

現在の(間違った)解決策:

現在、削除するユーザーの ID/主キーを非表示のフォーム要素に保存しています (恐ろしい、恐ろしい、恐ろしい、知っています - 誰かが要素インスペクターでユーザーを削除する可能性があります...)。このようなもののベストプラクティスは何ですか? 削除するユーザーの ID/主キーを $_SESSION 変数として保存しますか? クッキー?ハッシュ化された URL を $_GET で取得しますか?

編集

さまざまな管理者によって管理されるさまざまなユーザー グループがあります。グループ A の管理者は、グループ B (およびそのユーザー) などについて何も知りません。すべてのユーザーは 1 つのテーブルにあり、すべてのユーザーは任意の数のグループに属することができます。ユーザーの ID を保護し、DOM から除外して、誰かが ID を変更したり、管轄外のユーザーを削除したりできないようにする必要があります。

4

3 に答える 3

1

ユーザーを削除するときは、必ずユーザー権限を確認してください。

たとえば、セッション/ Cookie内のデータをチェックし、侵入した場合にtrueを返す関数isUser()を作成すると、ユーザーとしての権利を示すvarにアクセスすることもできます。また、データに問題がなく、実際に正しいデータでログインしているかどうかを確認する場合は、サイトでのアクセスレベルなどを含む$user_rightsvarを作成できます。

次に、単純に:

if(isUser() and $user_rights == 9) { /* code here, 9 is e.g. admin right */ } 
于 2012-08-29T21:30:33.380 に答える
1

$_SESSIONセッションはページ間の状態を維持するためのものであり、ここではこのような状況はありません。

リソース (ユーザーなど) を扱うときのベスト プラクティスは、RESTful 環境をセットアップすることです。

このようなシステムをまだセットアップしていませんが$_GET$_POSTPHP 配列を使用して HTTP リクエストを利用できます。

<form action="delete.php" method ="post">
    <select id="user" name="user">
        <option value="1">Joh Doe</option>
        <option value="2">Jane Doe</option>
        <option value="3">Dun No</option>
    </select>
    <input type="submit" value="Submit"/>
</form>

このフォームを送信すると、 にPOSTリクエストが送信されdelete.php$_POST配列にはuser選択された値のキーが含まれます。その後、PDO 準備済みステートメントを使用して、そのようなキーでユーザーを削除できます。

権限の削除を拒否することに対して、ログインしたユーザーが十分な権限を持っていない場合にリクエストをブロックするためにスクリプトをセットアップする必要があります.それらのセキュリティ コンポーネントを利用できます。

隠しフィールドのアイデアはCSRF 保護の背後にあるため、まったく無意味ではありません。もちろん、セッションに依存しています。

于 2012-08-29T21:27:34.853 に答える
0

セッションに問題はありません。セッションは、一時的に複数のページに保存されるために使用されます。

于 2012-08-29T21:22:22.313 に答える