2016-08-02 47 views
1

新安全和想知道這種類型的登錄是多麼安全?我不是以任何方式保護任何銀行/財務數據,而是試圖獲得一些不應該暴露給公衆的敏感數據。我只需要密碼 - 沒有官方登錄完成。sha256與PHP會話

這是一個名爲access.php的文件,其中包含密碼輸入字段。

<?php 
session_start(); 
if (!isset($_SESSION['loggedIn'])) { 
    $_SESSION['loggedIn'] = false; 
} 

// sha256() password 
$password = '13d249f2cb4127b40cfa757866850278793f814ded3c587fe5889e889a7a9f6c'; 

if (isset($_POST['password'])) { 
    if (hash('sha256',$_POST['password']) == $password) { 
     $_SESSION['loggedIn'] = true; 
    } else { 
     die ('That is the incorrect password - Please leave now'); 
    } 
} 

if (!$_SESSION['loggedIn']): 
?> 

然後我的index.php在頁面加載時需要access.php。應該訪問公共目錄以外的地方嗎?我是否錯過了其他我應該考慮的事情?

+3

[password_hash()](http://php.net/manual/en/function.password-hash.php) - 哈希和檢查PHP中密碼的最佳實踐 –

回答

4

新來的安全和想知道這種類型的登錄是多麼安全?

  1. SHA-256:您使用的是完全錯誤的工具。使用password_hash()password_verify()
  2. 此外,SHA-256是易受length-extension attacks
  3. 使用==比較哈希值有兩個安全漏洞:

因此,要回答你的問題:不是很。你的代碼試圖解決的問題在安全專家中是衆所周知的,他們已經不再使用它來簡化別人去解決它。這就是爲什麼password_hash()password_verify()存在。使用它們。

這就是說,歡迎來到軟件安全。如果您需要一些額外的資源來幫助您進行自我教育,請查看application security reading list on Github