Schafft die SSL-alone-SQL-injection verhindern?
Ich arbeite Verschärfung der Sicherheit auf meine app und das erste, was ich Plane auf tun, ist im Dienste der gesamten app über SSL. Ich Frage mich, wie sicher das ist, wenn es die einzige Maßnahme, die ich ergreifen, um sicher die app.
Zum Beispiel, sagen wir, ich habe folgende front-end-code:
<input id="password" value="my_password_value" />
<script>
$(document).ready(function(){
$('#password').blur(function(){
location.href = 'my_backend_script.php?password=' + $('#password').val();
});
});
</script>
Und dann in mein backend-Skript habe ich:
$user_ID = 1;
$password = $_GET['password'];
$USER_edit = mysql_query("UPDATE USERS SET password='$password' WHERE id='$user_ID'");
Wenn die oben genannten Beispiel waren läuft unter einer SSL-Verbindung, wäre es sicher aus einer SQL-injection-Angriffe?
HINWEIS:
Ich merke, dass prepared statements sind der standard für die Verhinderung von injection-Angriffen, und dass best-practice-umgesetzt würde, aber ich bin einfach neugierig, wie sicher SSL ist als eine standalone-Lösung.
SCHNELLE ANTWORT:
Nein, macht SSL nichts zur Vermeidung von SQL-injection-Angriffe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
SSL stellt nur sicher, den übertragungskanal zwischen dem client und dem server. Aber der client noch senden kann schädliche Daten über diesen sicheren Kanal.
Nein, nicht wirklich. SQL-Injection hat nichts zu tun mit der Sicherheit der Verbindung, sondern es hat mit der Sicherheit zu tun, wie Sie Benutzereingaben behandelt. Mit prepared statements verhindert, dass gezielt falsch gebildet input-Daten korrumpieren Ihre SQL-Abfragen.
Wenn alle Ihre Benutzer werden Vertrauenswürdige Benutzer, die sich anmelden müssen, mit SSL kann einige Sicherheit gegen SQL-injection, als würden Sie mehr Vertrauen haben, dass die Benutzer, die Sie in Ihre Anwendung würde nicht versuchen, um Ihr system zu hacken.
Aber SSL ist kein Ersatz für eine ordnungsgemäß schriftlich Ihrer Datenbank access code.
SSL-schützt nicht vor SQL-injection-Angriffen überhaupt. Prepared statements, Ansichten, etc sind die Lösungen für SQL-injection.
Die Frage, die mir in den Sinn kommt, wenn ich das hier lese, ist: Wo ist die Injektion geschieht aus ?
Ist es einem Man-in-the-middle-wer ist die Injektion der Schurke SQL oder ist es ein angemeldeter Benutzer ?
Mit SSL stellt sicher (zu einem anständigen Grad), dass ein MITM kann nicht schleichen Schurke Daten (z.B. SQL) in meinen Paketen.
So, warum sind so viele sagen, die SQL-Injektion ist völlig unabhängig von SSL ?
In meiner bescheidenen Meinung nach, die Verwendung von SSL-Adressen, die viele Angriffe auf ein anständiges Maß.
Betrachten Sie zum Beispiel eine bestehende Anwendung, in denen es nicht möglich ist, wenden Sie eine der reellen Lösungen für SQL-Injection : sagen, Prepared statements, wegen der Menge an code-churn-Ergebnis.
Was können Sie tun, um einfach eine bessere Sicherheit für Ihre app ?
Wie @JeffOlson erwähnt, wenn Benutzer sich anmelden und wenn Sie sich angemeldet Sie Ihnen Vertrauen, dann ist SSL eine entsprechende Lösung (für SQL-injection und ein paar andere Attacken).
Obwohl Sie anscheinend schon einig, dass die SSL-Adresse nicht SQL-injection - voll für jeder Anwendung.