申し訳ありませんが、これに関連する前に同様の質問をしましたが、管理者に対する完全な証拠にするためにコードを修正しました (と思います)。通常のユーザー アカウント。
管理者とユーザーはメンバー リスト ページを共有します。違いは次のとおりです。管理者は次のようなものを取得します
Edit | Delete | Make Admin
これは、あなたが最も見る必要がある基本的なコードです....
if(@$_GET['id'] != ""){
if (has_access($session_user_id, 1) === false) {
header('Location: index.php');
exit();
}
$userID = intval($_GET['id']);
if (!$userID) {
header('Location: index.php');
die();
}
$sql = "DELETE FROM users WHERE user_id='".$userID."'";
$query = mysql_query($sql);
header('Location: members.php?id=&page=1');
}
コードのさまざまなセクションについて説明します。
if(@$_GET['id'] != ""){
if (has_access($session_user_id, 1) === false) {
header('Location: index.php');
exit();
}
.....continued
これは、URL の ID が "" と等しくない場合は、ユーザーのランク (管理者または通常) を確認します。通常の場合は、インデックス ページに移動し、スクリプトを停止します。
通常のユーザーは id ステートメントを編集することは想定されていません...編集する場合は...ハッキングまたは何らかの目的で編集していることを意味します....
次の部分に進みます
$userID = intval($_GET['id']);
if (!$userID) {
header('Location: index.php');
die();
}
これは基本的に intval であるため、ID は ONLY です。NUMBER、これは次のようなものをブロックします
'; DELETE FROM users WHERE user_id=19;
NEXT ... 追加のセキュリティ機能。ユーザー ID がリダイレクトされていない場合は、リダイレクトして終了します
最後に、
$sql = "DELETE FROM users WHERE user_id='".$userID."'";
$query = mysql_query($sql);
header('Location: members.php?id=&page=1');
}
SQL を実行し、ユーザーを同じページにリダイレクトして、結果を更新します。
これは私が述べている正しい論理ですか?
ここに私の完全な members.php ファイルがあります
http://pastebin.com/tkstyrWg
また、ウェブサイトはでテスト用に稼働しています
http://1334.3owl.com
members.php には実際には
protect();
ログインしていないユーザーをメインページにリダイレクトする機能
このWebサイトでSQLインジェクションを自由にテストできます...
これは、テストに使用できるデモユーザーです
demouser
demopass
スクリプトが安全でない場合...どうすれば安全にできますか?
また、管理者に対して安全ですか?
URL の SQL スクリプトは正しいですか?