我有這樣一個URL(您需要登錄才能看到): https://www.example.com/form.php?id=268加密和MySQL查詢之前做會話變量檢查
form.php的是用戶對特定更新的詳細信息數據庫條目(在這種情況下,編號爲268)
應用程序基本上獲取id no,驗證並清理它,運行mysql查詢,然後用查詢結果填充表單。
在查詢中,我使用來自url的id加上會話變量$ _SESSION ['company_id'],它在登錄時設置。這意味着,如果用戶手動將url更改爲(例如)?id = 269,則只有當company_id與session變量中設置的company_id相匹配時,他/她才能夠看到id 269的詳細信息。
我確信url id會很好/安全,但session變量會讓我擔心。在運行mysql查詢之前,我沒有對會話變量執行任何IP或用戶代理檢查,這讓我感覺有點暴露。所以...
- 您認爲我應該加密$ _SESSION ['company_id']以獲得額外的安全性嗎?
- 您認爲在運行 查詢之前運行用戶代理檢查是否值得?這是否會增加任何安全值?
-
更新
已經重寫的問題和標題,試圖更具體
你的第一個大禁忌正在生成的SQL查詢那樣;你打開自己的注射攻擊(http://en.wikipedia.org/wiki/SQL_injection)。使用[prepared statements](http://php.net/manual/en/pdo.prepared-statements.php)。 – 2011-12-28 19:40:21
您還需要清理和驗證輸入。在這種情況下,應該很容易確保ID是一個有效的int。 – MrGlass 2011-12-28 19:45:08
我逃離了獲得$ id = mysqli_real_escape_string($ link,$ _GET ['id']),這有助於 – gelviis 2011-12-28 19:46:19