Jeder weiß, dass Sicherheit mit dem Fortschritt der Technologie das grundlegende und wichtige Merkmal für jede Geschäfts- und Social-Media-Plattform ist. Fast jedes Unternehmen gibt seine Geschäftsdaten weiter, diese Daten speichern sie in den Datenbanken. Daher bietet SQL Techniken, um Ihre Daten vor Hackern zu schützen. Wir können unsere Website-Daten mit verschiedenen Techniken vor Hackern schützen. Ebenso ist die SQL-Injection eine Hacking-Technik. Hacker können auf Ihre Daten zugreifen und Ihre Server zum Absturz bringen, indem sie Code in Ihre Datenbanken einschleusen. Dieses Verfahren wird durch eine ungeeignete Codierung von geneigten Bahnpaketen durchführbar gemacht. Einige neue Entwickler überprüfen nicht die Leerheit von Datenfeldern und leere Felder sind die Ursache für die SQL-Injektion.
Dieser Ansatz besteht aus der Verwendung vorbereiteter Aussagen mit dem Fragezeichen-Platzhalter (?) in unseren Abfragen jedes Mal, wenn wir eine vom Verbraucher bereitgestellte Gebühr einfügen müssen. Dies ist sehr effektiv und immun gegen Exploits, es sei denn, es befindet sich ein Wurm in der Implementierung der JDBC-Motivkraft.
Ein einfacher Beispielcode für diese Technik ist:
öffentliche Liste safeFindAccountsByCustomerId( String customerId )
wirft Ausnahme {
Zeichenfolge sql = ‘ select ‘ + ‘ customer_id, acc_number, branch_id, balance from Accounts ‘ + ‘ where customer_id = ? ' ;
Verbindung c = dataSource.getConnection( ) ;
PreparedStatement p = c.prepareStatement( sql );
p.setString( 1 , Kunden-ID );
Ergebnismenge rs = p.executeQuery( sql ) ) ;
// ausgelassen – Zeilen verarbeiten und eine Kontenliste zurückgeben
}
Im obigen Code ist die im Verbindungsbeispiel verfügbare Methode „prepareStatement()“ verfügbar, um ein „PreparedStatement“ zu erhalten. Dies ermöglicht es uns, von einer Person bereitgestellte Werte auf solide Weise in eine Frage einzufügen, bevor sie ausgeführt wird.
Verwenden Sie PDO und vorbereitete Abfragen.
($conn ist ein PDO-Objekt)
$stmt = $conn -> Vorbereiten (‘ INSERT INTO tbl VALUES ( :Id , :name ) ‘ );
$stmt -> bindValue (‘ :id‘ , $id ) ;
$stmt -> bindValue(‘ :name ‘ , $name ) ;
$stmt -> ausführen( ) ;
Vorbereitete Anweisungen sind widerstandsfähig gegenüber SQL-Injection, da Parameterwerte, die später durch die Verwendung eines einzigartigen Protokolls übertragen werden, jetzt nicht erfolgreich maskiert werden müssen. Wenn die ursprüngliche Deklarationsvorlage nicht von Outside Enter abgeleitet wird, kann keine SQL-Injection auftreten.
Viele Entwicklungsteams entscheiden sich für die Verwendung von Object Relational Mapping (ORM)-Frameworks, um die Übersetzung von SQL-Ergebniseinheiten in Codeobjekte besonders nahtlos zu gestalten. ORM-Tools schlagen oft vor, dass Entwickler selten SQL-Anweisungen ihres Codes schreiben sollten – und diese Tools verwenden glücklicherweise parametrisierte Anweisungen unter der Haube.
def aktueller_Benutzer (E-Mail)
# Das Objekt „Benutzer“ ist ein Active Record-Objekt, das Methoden finden muss
# wird von Rails automatisch generiert.
User.find_by_email (E-Mail)
Ende
Der obige Code schützt Sie vor SQL-Injections oder Hackerangriffen.
Eine weitere einfache Methode, um zu verhindern, dass Ihre SQL-Datenbank injiziert wird, sind verschlüsselte Datenbanken oder Daten. Speichern Sie daher Ihre Datenbankanmeldeinformationen normalerweise in einem separaten Bericht und verschlüsseln Sie ihn sicher, um sicherzustellen, dass die Angreifer nicht viel davon profitieren können.