2016-04-20 3 views
-2

Ich habe einen Code, der eine Ajax-Variable annehmen und ich möchte die MD5 vor dem Senden auf Datenbank anwenden, wie kann ich die Variable durch das Skript mit md5 vor zu verschlüsseln auf Datenbank senden? die Variable es von Ajax erhalten ist $ PunkteWie man die MD5 in einer AJAX-Variablen anwenden

<?php 
header('Access-Control-Allow-Origin: *'); 
error_reporting(E_ALL); 
ini_set('display_errors',1); 
session_start(); 
include_once 'dbconnect.php'; 

if(!isset($_SESSION['user'])) 
{ 
    header("Location: index.php"); 
} 

if(isset($_GET['points'])){ 

    //Lightly sanitize the GET's to prevent SQL injections and possible XSS attacks 

    $points = strip_tags(mysql_real_escape_string($_GET['points'])); 
    //$sql = mysql_query("INSERT INTO `publiadd_loginsx`.`users` (`points`) VALUES ('points');"); 
    $sql = mysql_query("UPDATE `users` SET user_points = user_points +'$points' WHERE user_id = " . $_SESSION['user']); 

    if($sql){ 
      //The query returned true - now do whatever you like here. 
      echo 'Your Points was saved. Congrats!'; 
    }else{ 
      //The query returned false - you might want to put some sort of error reporting here. Even logging the error to a text file is fine. 
      echo 'There was a problem saving your points. Please try again later.'; 
    } 
}else{ 
    echo 'Your points wasnt passed in the request. Make sure you add ?name=NAME_HERE&score=1337 to the tags.'; 
} 

// close MySQL connection 
mysql_close(); 
?> 
<html> 
<head> 
</head> 
<body> 
<body bgcolor="#ffffff"> 
</body> 
</html> 
+1

Sie erkennen, dass Sie, wenn Sie 'Punkte' hashen, wie das MD5 ist, nie in der Lage sein werden, dann zu enthüllen. Auch 'SET user_points = user_points +' $ points'' wird nie wieder funktionieren – RiggsFolly

+1

Könnten Sie uns einen kleinen Überblick darüber geben, was Sie erreichen wollen? Was versuchst du mit MD5 zu erreichen? MD5 wird nicht für die Verschlüsselung, sondern für das Hashing verwendet. Wenn Sie sicherstellen möchten, dass ein Benutzer seine Punkte nicht aktualisieren kann, indem er den übergebenen Wert ändert, müssen Sie auf der Serviceseite und nicht auf der Clientseite eine völlig andere Handhabung in Betracht ziehen. – Tom

+0

Nun ja, was ich suche ist zu schwierig, die Benutzer zu aktualisieren sie Punkte dort auf Ajax Anrufvariable übergeben –

Antwort

1

mysql_ * ist veraltet und unsicher Verwendung gU statt.

md5 ist ein Hash alogithm und nicht verwendet werden kann, um nur für die Validierung

Verschlüsselung sichert nicht caus Benutzer/Browser es wird alles tun, Verschlüsselung/Entschlüsselung und es an den Server zu senden. Also sind sie Schlüssel für Verschlüsselungen bekannt.

Warum werden die Punkte/Punkte vom Benutzer berechnet? Übertragen Sie einfach das Ergebnis der Aufgabe oder was auch immer und berechnen Sie die Punkte, wenn die Antwort oder was auch immer korrekt ist. alles browserside (ajax) ist vom Benutzer reproduzierbar.

1

Sie erklären nicht gut Ihren Kontext, aber wenn Sie ein wenig Sicherheit möchten, können Sie die Punkte des Benutzers unter Verwendung POST rufen Sie stattdessen mit <form action="" enctype="application/x-www-form-urlencoded" method="post"></form>.

Wie andere Entwickler sagen, kann MD5 nicht entschlüsseln. Wenn Sie mit dieser Methode fortfahren möchten, senden Sie den Wert X und md5(X) an den Server und überprüfen Sie dann mit PHP, ob beide MD5-Werte gleich sind.