2009-12-15 203 views
0

我正在構建一個從頭開始具有註冊和登錄功能的Web應用程序。當涉及到安全問題和攻擊如mysql注入時,我完全是新手。除了數據庫中的密碼加密之外,還有哪些其他安全問題需要我擔心?我該如何照顧他們? 謝謝安全問題登錄註冊系統使用php javascript mysql

回答

2

你需要確保消毒在SQL所有變量,如果你不使用類似PDO這是與mysql_real_escape_string

例如做最容易,當你正在檢查用戶憑據您的代碼會看起來是這樣的:

$sql = "SELECT `id` FROM `users` WHERE `username` = '".mysql_real_escape_string($_POST['username'])."' AND `password` = '".mysql_real_escape_string($_POST['password'])."'"; 
$dosql = mysql_query($sql); // etc 

這也是值得添加以下到您的登錄程序,以防止session fixation

session_regenerate_id(true); 
+0

如果你傳遞的是一個整數而不是字符串,不要使用'mysql_real_escape_string',而是先轉換它,就像'(int)$ myInt' – philfreo 2009-12-15 23:36:44

1

你真的需要注意的一件事是Cross-site Request Forgery(CSRF或XSRF)。防止它最簡單的方法是發送一個令牌與每個請求(甚至發送登錄cookie的副本將工作)。

1

您還必須擔心跨站點腳本攻擊。 (通常縮寫爲XSS)基本上,這意味着如果您的應用程序曾經將用戶提交的數據提交給後續頁面的HTML部分,則必須對其進行消毒。例如,如果您的應用程序是留言板,惡意用戶可以使用嵌入式HTML創建帖子,以便在用戶不知情的情況下加載遠程javascript。

防禦它的一個簡單方法是使用將HTML字符編碼爲實體代碼的函數對作爲Web應用程序HTML的一部分的任何數據進行編碼。在PHP中,您可以使用htmlspecialchars()

但是,你應該考慮更多。 OWASP(開放Web應用程序安全項目)是真正創建這一領域標準的行業組織。他們發佈了OWASP Top Ten列表,列出了10個最流行的安全漏洞。你會看到這些答案中提到的所有內容。

1

搜索「登錄安全問題」時,有許多優秀的文章。這個很棒:most common security mistakes。仔細閱讀每一個有投票權的答案,並確保你知道這意味着什麼,並且你沒有犯這個錯誤。總之,爲了安全起見,您必須假設用戶的每一條數據都可能是惡意的。