php
  • security
  • salt
  • 2009-12-05 178 views 0 likes 
    0

    您對這個登錄程序有什麼看法?它很安全嗎?php安全登錄

    當他們登錄我首先檢查用戶名存在,如果它確實我抓住從用戶的鹽(每個用戶都有獨特的鹽),我重新哈希與貼出的密碼

    $pass = hash('sha256', $salt . $posted_password);

    然後我只是與

    $check = mysql_query("SELECT * FROM users WHERE username = '".$username."' AND password = '".$pass."'") or die("MySQL Error: ".mysql_error()); 
    
    +0

    我不明白額外散列密碼在這種情況下提高安全性,謹慎詳細說明?我很好奇。 –

    +0

    它有助於防止數據庫服務器被黑客攻擊,並且數據泄漏,在這種情況下,所有破解者將得到的是哈希密碼,這對他們來說是沒有實際用處的......(除此之外規則,適用,使用彩虹攻擊等) –

    回答

    2

    這是不安全的。

    使用參數化查詢,或使用mysql_real_escape_string確保您防止SQL注入。

    除此之外,這是一種非常常見的登錄技術,基本上是「標準」。

    鏈接這裏更多注射的安全性: How can I prevent SQL injection in PHP?

    +0

    ofc我使用mysql_real_escape_string我不想發佈所有代碼 – Tony

    +5

    @Tony所以換句話說你在說什麼是「我的代碼,我沒有告訴你安全嗎?」 – Yacoby

    3

    我不認爲這是張貼在失敗的MySQL錯誤是一個好主意。

    or die("MySQL Error: ".mysql_error()); 
    

    說到這裏,我想說的是,返回的信息越少越好。提供可以告訴用戶嘗試登錄的信息,不管它是用戶名還是密碼失敗,都不好,這也會告訴用戶你正在使用哪種數據庫,如何查詢等等。

    進一步認識到,在這種情況下最常見的安全方式是克服,是通過社會工程,在這種情況下,它不關心你如何散列數據等(不是你不應該)只是爲了認爲安全性非常高,並且不會限制自己如何存儲和檢索數據。

    例如,是否通過加密線路完成登錄?用戶擁有的密碼強度是否有強制執行?用戶登錄後會發生什麼情況,您如何跟蹤登錄用戶與僅訪問該網站的用戶?你如何防止會議收購等。我不是這個話題的專家,但它是一個廣泛的話題。也許你只是想對你發佈的代碼發表評論,在這種情況下,我的頂級段落應該是你需要閱讀的所有內容;)以及Crowe T. Robot的回答:)

    相關問題