2017-12-02 114 views
-1

您好我製作一個腳本,一世的連接代碼如何保護POST功能

在session_start();
class sqlcon {
private $ lochost =「127.0.0.1」;
private $ user_db =「root」;
private $ db_pass =「toor」;
private $ db_nnm =「whatsvedio」; mysql_connect($ this-> lochost,$ this-> user_db,$ this-> db_pass)或者die(「不能連接」);
mysql_select_db($ this-> db_nnm)或die(「Cant Select DB」);

}<br> 
function sqlc(){<br> 
    $userad = $_POST['username'];<br> 
    $passad = mysql_real_escape_string($_POST["password"]);<br> 
    $sqll = "SELECT * FROM admins WHERE username='$userad' AND password ='$passad'"; 
    addslashes($sqll); 
    $tquery = mysql_query($sqll); 
    $sqlln = mysql_num_rows($tquery); 
    if($sqlln == 1){ 
     $_SESSION['username']="admin"; 
     $_SESSION['password']="passadmin"; 
     header("Location:adminpanel.php"); 
     //remember me 
    } 
    else{} 
    }}$tnfez = new sqlcon; $tnfez->sqlc(); 

我怎麼能保護

$passad = mysql_real_escape_string($_POST["password"]);<br> 

我嘗試使用MD5大號

$passad = md5(mysql_real_escape_string($_POST["password"])); 

但是當我輸入用戶名和密碼發送一個錯誤在密碼

+0

使用'mysqli_real_escape_string'了'i'代表和改進應該是更安全的方式。對於今天的標準,md5也不夠安全,使用'sha512'就像這樣'$ hash = hash('sha512',$ password);'並且每個mysql函數都應該是mysqli – Niels

+0

if if $ hash = $ _POST [「password」 ]一個使用它連接然後錯誤的密碼需要加密$ _POST導致這樣的代碼可以給任何一個黑客它 –

+0

MD5是[不安全](https://security.stackexchange.com/questions/19906/is-md5 -considered不安全)。這就是爲什麼我們有[密碼哈希](http://php.net/manual/en/function.password-hash.php) – Machavity

回答

-1

你應該在你的密碼值上使用md5()而不是mysql_real_escape_string()返回值。

所以首先糾正這一點,

passad = mysql_real_escape_string(md5($_POST["password"])); 
+0

錯誤的密碼.. –

-1

由於您的passad變量散列我想你必須散列變量比較喜歡這個

if(md5("passadmin") == $passad) 
+0

你這意味着如果(md5(「passadmin」)== $ passad){$ sqll =「選擇*從管理員在哪裏用戶名='$ userad'和密碼='$ passad'」; \t \t \t} –

+0

就像你說的,當你鍵入的用戶名和密碼,你得到錯誤,是因爲PHP比較你的$ passad包含「8b1a9953c4611296a827abf8c47804d7」哈希值。所以他們是不一樣的 – Glyphack

+0

是的,我明白。但我怎麼可以保護我的腳本或登錄連接? –