2016-03-21 4 views
-6

Eine meiner Webseiten wurde kürzlich und wird (laufend) ständig angegriffen. Ein JavaScript-Skript wird irgendwie in die MySQL-Datenbank eingefügt.JavaScript MySQL Injection Prevention

Ich verwende die folgenden:

$unsafe_variable = addslashes(htmlspecialchars(strip_tags(mysql_real_escape_string($_POST['user_input'])))); 

mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')"); 

jedoch der Hacker noch in der Lage ist, ein "Skript" Tag einzufügen. Ich habe keine Ahnung wie. Ich habe einen Wortfilter und habe das Wort "script" auf die schwarze Liste gesetzt, das blockiert wird, wenn ich einen Test auf der Site poste. Wie ist er/sie in der Lage, es durchzukommen?

enter image description here

Die oben ist ein Screenshot von dem Eintrag in die Datenbank. Hat jemand Ideen, wie ich das verhindern kann?

+0

Alle vier Funktionen sind keine "Schutzmechanismen". Sie konvertieren Daten. Wie diese Daten in Ihre Datenbank gelangen, ist relevant. Bitte poste stattdessen * diesen * Code, damit wir helfen können. –

+0

Es gibt wirklich nicht genug Informationen, um hier weiterzumachen. Wie werden die von Ihnen angegebenen Funktionen in welcher Reihenfolge angewendet? Es ist möglich, wenn sie in der falschen Reihenfolge sind, dann ist Ihr Schutz selbstzerstörerisch. – Chris

+5

Fixiere nicht den * Eingang *. Korrigiere die * Ausgabe *. Verwenden Sie 'htmlspecialchars', wenn dieses Feld Ihren Benutzern angezeigt wird. – ceejayoz

Antwort

3

Für den Anfang ist JavaScript Code, die ein Benutzer tatsächlich DOM-Tools bearbeiten können (wie Element inspizieren) und sollte nie mit Datenbanken als Mechanismus für die Sicherheit verwendet werden.

Sie sollten zuerst beginnen zu recherchieren über vorbereiten Anweisungen in PDO, wenn Sie nicht vertrauenswürdige Benutzereingaben verwenden; Der Bind-Parameter in der PDO-Schnittstelle entfernt den HTML-Inhalt automatisch aus der Eingabe.

Sie können auch die preg_replace Funktion in PHP betrachten. Dies kann verwendet werden, um mehr einzigartige und punktgenaue Streifen zu erstellen, und ermöglicht Funktionen wie BB Code.

Es gibt viele Ressourcen im Stapelüberlauf, die die in dieser Frage aufgeworfenen Sicherheitsprobleme abdecken und sicherlich jeden Ebenenangriff lösen.

Source 1
Source 2

Beachten Sie auch, der Angriff Sie bösartigen JavaScript-Code zu injizieren verwendet ist ein XSS-Angriff sind spezifiziert. Wenn Sie diesen Code zulassen möchten, fügen Sie ihn niemals direkt in eine globale Seite ein (dh Kommentare, die mehrere Benutzer sehen können). Lassen Sie den einzelnen Benutzer nur den Code anzeigen, den er eingegeben hat. Andernfalls sehen Sie sich die obigen Quellen für weitere Informationen an.

+0

Sie müssen ['htmlspecialchars'] (http://php.net/manual/en/function.htmmlspecialchars.php) erwähnen, das verwendet wird, um Benutzerinhalte für die HTML-Anzeige zu entgehen. Es sollte überall verwendet werden ** alle ** Benutzerdaten werden angezeigt. – tadman

+0

Bearbeiten Sie es auf alle Fälle, wenn Sie denken, dass es hinzugefügt werden sollte, ich hatte gehofft, dass die Quellen solche Informationen enthalten. Netter Zusatz jedoch @tadman – KDOT