2016-05-04 24 views
0
在PHP中SQL時用戶訪問其他用戶的信息,好的做法

我目前獲取用戶信息的方式:不具有獲取來自AJAX

require_once '../dbCred.php'; 

$id = $_GET["id"]; 

$pdo = new PDO($dsn, $db_username, $db_password, $db_opt); 

$stmt = $pdo->prepare("SELECT * FROM utilisateurs WHERE id = :id"); 
$stmt->bindParam(':id', $id, PDO::PARAM_INT); 
$stmt->execute(); 

echo json_encode($stmt->fetch()); 

我打電話此網頁中的AJAX命名getUtilisateur.php 。

但是,如果我改變GET數據,我可以輕鬆檢索每個用戶的信息。

防止用戶訪問此信息的好方法是什麼?

我正在考慮與用戶存儲在一起的「密鑰」,並以這種方式訪問​​用戶的信息。編輯:theres'沒有在我的應用程序登錄
編輯2:我的應用程序是一項調查,當第一個用戶完成回答調查,他發送給另一個用戶,然後我比較這兩個調查。所以第二個用戶得到一個像survey.html?user_id = 1的URL,我想要的是像survey.html?key = dqqsd454qsq988。那可能嗎 ?它足夠安全嗎?

+2

恩,會議讓我想起...... – MonkeyZeus

+0

我也在想它,但那隻會保證CSRF風格的入侵。或者有什麼我不明白的 – Hayanno

+0

是的。登錄和認證設置SESSION用戶ID。從那裏,您可以在會話中從該ID執行用戶特定的查詢。或者,如果您想超級用戶爲其他用戶ID運行查詢,則可以事先進行驗證。 –

回答

0

如果您沒有身份驗證,服務器無法知道執行查詢的人是否被允許執行此操作。

如果您需要這樣的安全措施,這似乎是您的情況,您需要實施安全的身份驗證系統。

0

美好的一天先生。您可以做的好事是使用電子郵件/用戶名和密碼啓用登錄頁面,然後僅通過電子郵件和密碼獲取用戶信息。密碼使用散列和鹽它,這樣它會被保護。使用google recaptcha也可防止機器人或腳本被過濾,並始終使用某些php衛生代碼清理所有要保存到數據庫的輸入。