If your web page accepts user input a SQL injection might happen if th μετάφραση - If your web page accepts user input a SQL injection might happen if th Ελληνικά πώς να το πω

If your web page accepts user input

If your web page accepts user input a SQL injection might happen if the data isn’t validated or sanitized before the database query is done. The following example is a common mistake, made by the beginning programmer or webmaster. Check this code, do you ever wrote a MySQL query like this one?
PHP
$result = mysql_query("SELECT * FROM users WHERE username = '". $_POST["username"] ."' && password = '". $_POST["password"] ."');
1

$result = mysql_query("SELECT * FROM users WHERE username = '". $_POST["username"] ."' && password = '". $_POST["password"] ."');

This row of code is written to accept two values from a login form: a user name and a password. But what if someone will submit an empty user name and for the password value the following string: ‘ OR username = ‘admin the query would look like:
PHP
$result = mysql_query("SELECT * FROM users WHERE username = '' && password = '' OR username = 'admin'");
1

$result = mysql_query("SELECT * FROM users WHERE username = '' && password = '' OR username = 'admin'");

Creating secure php websitesIf this query was used for a login script, the hacker would get access to the account for the user with the name “admin”. Imagine what a hacker could do in your web application if he has administrator rights. Don’t worry there are several ways to protect your queries against SQL injections.

First of all it’s better to use the MySQL improved extension (MySQLi). The old PHP functions for MySQL are still available, but the MySQLi extension offers more secure features. If you use the MySQLi functions you can choose between procedural style and the object oriented style. I use for my examples the object oriented style.

Before I escape the values for our queries we use the function filter_var() to sanitize the input values.
PHP
$username = filter_var($_POST["username"], FILTER_SANITIZE_STRING);
$password = filter_var($_POST["password"], FILTER_SANITIZE_STRING);
1
2

$username = filter_var($_POST["username"], FILTER_SANITIZE_STRING);
$password = filter_var($_POST["password"], FILTER_SANITIZE_STRING);

My example is using the default value for the filter type FILTER_SANITIZE_STRING. Next I use the MySQLi variant of mysql_real_escape_string() to prepare the strings for the database query. Before I can continue with the input validation, I need to create a database object first.
PHP
$db = new mysqli("localhost", "db_user", "db_password", "db_name");

if (mysqli_connect_errno()) { /* check connection */
die("Connect failed: ".mysqli_connect_error());
}
$username = $db->mysqli_real_escape_string($username);
$password = $db->mysqli_real_escape_string($password);
1
2
3
4
5
6
7

$db = new mysqli("localhost", "db_user", "db_password", "db_name");

if (mysqli_connect_errno()) { /* check connection */
die("Connect failed: ".mysqli_connect_error());
}
$username = $db->mysqli_real_escape_string($username);
$password = $db->mysqli_real_escape_string($password);

Now it’s safe to pass these values to our database query:
PHP
$result = $db->query(sprintf("SELECT FROM users WHERE username = '%s' && password = '%s'", $username, $password));
$db->close();
1
2

$result = $db->query(sprintf("SELECT FROM users WHERE username = '%s' && password = '%s'", $username, $password));
$db->close();

In my example I used the function sprintf() to add the values to the query and use the $db->close() to destroy the database object. Another great and secure MySQLi feature the prepared statements function.
0/5000
Από: -
Για: -
Αποτελέσματα (Ελληνικά) 1: [Αντίγραφο]
Αντιγραφή!
Εάν η ιστοσελίδα σας αποδέχεται είσοδο χρήστη SQL ένεση μπορεί να συμβεί αν τα δεδομένα δεν είναι επικυρωμένη ή να απολυμαίνονται πριν από το ερώτημα βάσης δεδομένων γίνεται. Το ακόλουθο παράδειγμα είναι ένα κοινό λάθος, φτιαγμένο από τον προγραμματιστή αρχή ή webmaster. Ελέγξτε αυτό το κωδικό, γράψατε ποτέ ένα ερώτημα MySQL όπως αυτό;PHP$result = mysql_query ("Επιλέξτε * από χρήστες όπου όνομα χρήστη = '". $_POST ["όνομα χρήστη"]."«& & κωδικού πρόσβασης = '". $_POST ["password"]."")?1 $result = mysql_query ("Επιλέξτε * από χρήστες όπου όνομα χρήστη = '". $_POST ["όνομα χρήστη"]."«& & κωδικού πρόσβασης = '". $_POST ["password"]."")?Αυτήν τη γραμμή του κώδικα είναι γραμμένο να δεχθεί δύο τιμές από μια φόρμα σύνδεσης: ένα όνομα χρήστη και έναν κωδικό πρόσβασης. Αλλά τι γίνεται αν κάποιος θα υποβάλει ένα όνομα χρήστη άδειο και για τον κωδικό πρόσβασης που εκτιμούν την ακόλουθη συμβολοσειρά: «ή όνομα χρήστη = «admin, το ερώτημα θα εμοίαζε με:PHP$result = mysql_query ("Επιλέξτε * από χρήστες όπου όνομα χρήστη = '' & & κωδικού πρόσβασης = '' OR όνομα χρήστη = «admin»")?1 $result = mysql_query ("Επιλέξτε * από χρήστες όπου όνομα χρήστη = '' & & κωδικού πρόσβασης = '' OR όνομα χρήστη = «admin»")?Τη δημιουργία ασφαλούς php websitesIf ερώτημα αυτό χρησιμοποιήθηκε για μια δέσμη ενεργειών σύνδεσης, οι χάκερ θα πάρει πρόσβαση στο λογαριασμό για το χρήστη με το όνομα "admin". Φανταστείτε τι θα μπορούσε να κάνει ένας εισβολέας στην εφαρμογή web σας εάν έχει δικαιώματα διαχειριστή. Μην ανησυχείτε υπάρχουν διάφοροι τρόποι για την προστασία σας ερωτήματα από SQL ενέσεις.Πρώτα απ ' όλα είναι καλύτερα να χρησιμοποιήσετε την MySQL βελτιωθεί επέκταση (MySQLi). Η παλιά PHP λειτουργίες για MySQL είναι ακόμα διαθέσιμα, αλλά η επέκταση MySQLi προσφέρει πιο ασφαλή χαρακτηριστικά. Εάν χρησιμοποιείτε το MySQLi λειτουργίες που μπορείτε να επιλέξετε μεταξύ διαδικαστικές στυλ και αντικειμενοστραφή στυλ. Μπορώ να χρησιμοποιήσω για μου παραδείγματα το αντικειμενοστραφή στυλ.Πριν εγώ να ξεφύγουν οι τιμές για ερωτήματα μας χρησιμοποιούμε τη λειτουργία filter_var() να αποστειρώνουν τις τιμές της εισόδου.PHP$username = filter_var ($_POST ["όνομα χρήστη"], FILTER_SANITIZE_STRING)?$password = filter_var ($_POST ["password"], FILTER_SANITIZE_STRING)?12 $username = filter_var ($_POST ["όνομα χρήστη"], FILTER_SANITIZE_STRING)?$password = filter_var ($_POST ["password"], FILTER_SANITIZE_STRING)?Παράδειγμά μου χρησιμοποιεί την προεπιλεγμένη τιμή για τον τύπο του φίλτρου FILTER_SANITIZE_STRING. Στη συνέχεια χρησιμοποιώ το MySQLi παραλλαγή του mysql_real_escape_string() για την προετοιμασία τις συμβολοσειρές ερωτήματος στη βάση δεδομένων. Πριν μπορώ να συνεχίσω με την επικύρωση των εισροών, πρέπει να δημιουργήσετε ένα αντικείμενο βάσης δεδομένων πρώτα.PHP$db = νέα mysqli ("localhost", "db_user", "db_password", "db_name")?Αν (mysqli_connect_errno()) {/ * Ελέγξτε σύνδεση * / πεθαίνουν ("σύνδεση απέτυχε: «.mysqli_connect_error())?}$username = $db -> mysqli_real_escape_string($username)?$password = $db -> mysqli_real_escape_string($password)?1234567 $db = νέα mysqli ("localhost", "db_user", "db_password", "db_name")? Αν (mysqli_connect_errno()) {/ * Ελέγξτε σύνδεση * / πεθαίνουν ("σύνδεση απέτυχε: «.mysqli_connect_error())?}$username = $db -> mysqli_real_escape_string($username)?$password = $db -> mysqli_real_escape_string($password)?Τώρα είναι ασφαλές να περάσει αυτές τις αξίες μας ερώτημα βάσης δεδομένων:PHP$result = $db -> ερωτήματος (sprintf ("Επιλέξτε από τους χρήστες όνομα χρήστη πού = ' %σ & & κωδικό πρόσβασης = ' %s'", $username, $password))?$db -> κοντά();12 $result = $db -> ερωτήματος (sprintf ("Επιλέξτε από τους χρήστες όνομα χρήστη πού = ' %σ & & κωδικό πρόσβασης = ' %s'", $username, $password))?$db -> κοντά();Στο παράδειγμά μου, θα χρησιμοποιηθεί η λειτουργία sprintf() για να προσθέσετε τις τιμές στο ερώτημα και να χρησιμοποιήσετε το $db -> κοντά() να καταστρέψουν τη βάση δεδομένων. Μια άλλη μεγάλη και ασφαλή MySQLi διαθέτουν συνάρτησης έτοιμες δηλώσεις.
Μεταφράζονται, παρακαλώ περιμένετε..
Αποτελέσματα (Ελληνικά) 2:[Αντίγραφο]
Αντιγραφή!
Εάν η ιστοσελίδα σας αποδέχεται την είσοδο του χρήστη ο SQL ένεση μπορεί να συμβεί αν τα δεδομένα δεν έχει επικυρωθεί ή να απολυμαίνονται πριν από το ερώτημα της βάσης δεδομένων γίνεται. Το ακόλουθο παράδειγμα είναι ένα κοινό λάθος, γίνεται από τον προγραμματιστή αρχή ή webmaster. Ελέγξτε τον κωδικό αυτό, εσείς έγραψε ποτέ ένα ερώτημα MySQL σαν αυτό;
PHP
$ result = mysql_query ("SELECT * από τους χρήστες με το Όνομα Χρήστη =" ". $ _POST [" username "].» «&& password =" ". $ _POST ["password"].? "")
1 ". $ _POST". $ _POST $ result = mysql_query ("SELECT * από τους χρήστες με το Όνομα Χρήστη =" ["username"]. »« && κωδικό πρόσβασης = '["password"] . ")? Αυτή η σειρά του κώδικα είναι γραμμένο για να δεχθεί δύο τιμές από μια φόρμα σύνδεσης: ένα όνομα χρήστη και έναν κωδικό πρόσβασης. Αλλά τι γίνεται αν κάποιος θα υποβάλει κενό όνομα χρήστη και για την τιμή κωδικό πρόσβασης την ακόλουθη συμβολοσειρά: «Ή το όνομα χρήστη = 'admin το ερώτημα θα μοιάζουν: PHP $ result = mysql_query ("SELECT * από τους χρήστες με το Όνομα Χρήστη = '' && password = '' ή το όνομα χρήστη = "admin" ")? 1 $ = αποτέλεσμα mysql_query ("SELECT * από τους χρήστες με το Όνομα Χρήστη = '' && κωδικό πρόσβασης = '' ή το όνομα χρήστη =" admin "")? Δημιουργία ασφαλούς php websitesIf αυτό το ερώτημα χρησιμοποιήθηκε για μια δέσμη ενεργειών σύνδεσης, οι χάκερ θα αποκτήσετε πρόσβαση στο λογαριασμό για το χρήστη με το όνομα "admin". Φανταστείτε τι ένας χάκερ θα μπορούσε να κάνει στην εφαρμογή web σας, εάν αυτός έχει δικαιώματα διαχειριστή. Μην ανησυχείτε, υπάρχουν διάφοροι τρόποι για να προστατεύσει τα ερωτήματα σας από ενέσεις SQL. Πρώτα απ 'όλα αυτό είναι καλύτερο να χρησιμοποιήσετε το MySQL βελτιωμένη επέκταση (mysqli). Οι παλιές λειτουργίες PHP για MySQL είναι ακόμα διαθέσιμα, αλλά η επέκταση mysqli προσφέρει πιο ασφαλή χαρακτηριστικά. Εάν χρησιμοποιείτε τις λειτουργίες mysqli μπορείτε να επιλέξετε μεταξύ των διαδικαστικών στυλ και αντικειμενοστραφή στυλ. Μπορώ να χρησιμοποιήσω για τα παραδείγματα μου αντικειμενοστρεφής στυλ. Πριν ξεφύγουν από τις τιμές για τα ερωτήματα μας χρησιμοποιούμε την filter_var λειτουργίας () για να αποστειρώνουν τις τιμές εισόδου. PHP $ username = filter_var ($ _ POST ["username"], FILTER_SANITIZE_STRING)? $ κωδικού πρόσβασης = filter_var ($ _ POST ["password"], FILTER_SANITIZE_STRING)? 1 2 $ username = filter_var ($ _ POST ["username"], FILTER_SANITIZE_STRING)? $ password = filter_var ($ _ POST ["password"], FILTER_SANITIZE_STRING)? παράδειγμα μου χρησιμοποιεί την προεπιλεγμένη τιμή για τον τύπο του φίλτρου FILTER_SANITIZE_STRING. Στη συνέχεια μπορώ να χρησιμοποιήσω το mysqli παραλλαγή του mysql_real_escape_string () για να προετοιμάσει τις χορδές για το ερώτημα βάσης δεδομένων. Πριν μπορώ να συνεχίσω με την επικύρωση των εισροών, θα πρέπει να δημιουργήσετε ένα αντικείμενο βάσης δεδομένων για πρώτη φορά. PHP $ db = νέα mysqli ("localhost", "db_user", "db_password", "db_name")? αν (mysqli_connect_errno ()) {/ * Να ελέγχετε σύνδεση * / die ("Connect απέτυχε:" .mysqli_connect_error ())? } $ username = $ dB-> mysqli_real_escape_string ($ username)? $ password = $ dB-> mysqli_real_escape_string ($ password)? 1 2 3 4 5 6 7 $ db = νέα mysqli ("localhost", "db_user", "db_password", "db_name")? αν (mysqli_connect_errno ()) {/ * Να ελέγχετε σύνδεση * / die ("Connect απέτυχε:" .mysqli_connect_error ()) ? } $ username = $ dB-> mysqli_real_escape_string ($ username)? $ password = $ dB-> mysqli_real_escape_string ($ password)? Τώρα είναι ασφαλές να περάσετε αυτές τις τιμές στο ερώτημα βάσης δεδομένων μας: PHP $ αποτέλεσμα = $ dB-> ερώτημα ( sprintf ("SELECT από τους χρήστες με το Όνομα Χρήστη = '% s' && κωδικό πρόσβασης = '% s'", $ username, $ password))? $ dB-> κοντά ()? 1 2 $ result = $ dB-> ερώτημα (sprintf ("SELECT από τους χρήστες με το Όνομα Χρήστη = '% s' && κωδικό πρόσβασης = '% s'", $ username, $ password))? $ dB-> κοντά ()? Στο παράδειγμά μου χρησιμοποίησα το sprintf λειτουργία () για να προσθέσετε το τιμές στο ερώτημα και να χρησιμοποιήσετε το $ dB-> κοντά () για να καταστρέψει το αντικείμενο της βάσης δεδομένων. Ένα άλλο μεγάλο και ασφαλή mysqli διαθέτουν τη λειτουργία έτοιμες καταστάσεις.



























































Μεταφράζονται, παρακαλώ περιμένετε..
 
Άλλες γλώσσες
η υποστήριξη εργαλείο μετάφρασης: Klingon, Ίγκμπο, Όντια (Ορίγια), Αγγλικά, Αζερμπαϊτζανικά, Αλβανικά, Αμχαρικά, Αναγνώριση γλώσσας, Αραβικά, Αρμενικά, Αφρικάανς, Βασκικά, Βεγγαλική, Βιετναμεζικά, Βιρμανικά, Βοσνιακά, Βουλγαρικά, Γίντις, Γαελικά Σκοτίας, Γαλικιακά, Γαλλικά, Γερμανικά, Γεωργιανά, Γιορούμπα, Γκουτζαρατικά, Δανικά, Εβραϊκά, Ελληνικά, Εσθονικά, Εσπεράντο, Ζουλού, Ζόσα, Ιαπωνικά, Ινδονησιακά, Ιρλανδικά, Ισλανδικά, Ισπανικά, Ιταλικά, Καζακστανικά, Κανάντα, Καταλανικά, Κινέζικα, Κινεζικά (Πα), Κινιαρουάντα, Κιργιζιανά, Κορεατικά, Κορσικανικά, Κουρδικά, Κρεόλ Αϊτής, Κροατικά, Λάο, Λατινικά, Λετονικά, Λευκορωσικά, Λιθουανικά, Λουξεμβουργιανά, Μαλέι, Μαλαγάσι, Μαλαγιάλαμ, Μαλτεζικά, Μαορί, Μαραθικά, Μογγολικά, Νεπαλικά, Νορβηγικά, Ολλανδικά, Ουαλικά, Ουγγρικά, Ουζμπεκικά, Ουιγούρ, Ουκρανικά, Ουρντού, Πάστο, Παντζάμπι, Περσικά, Πολωνικά, Πορτογαλικά, Ρουμανικά, Ρωσικά, Σίντι, Σαμοανικά, Σεμπουάνο, Σερβικά, Σεσότο, Σινχάλα, Σλαβομακεδονικά, Σλοβακικά, Σλοβενικά, Σομαλικά, Σουαχίλι, Σουηδικά, Σούντα, Σόνα, Ταζικιστανικά, Ταμίλ, Ταταρικά, Ταϊλανδεζικά, Τελούγκου, Τζαβανεζικά, Τούρκικα, Τσεχικά, Τσιτσέουα, Φιλιπινεζικά, Φινλανδικά, Φριζιανά, Χάουσα, Χίντι, Χαβαϊκά, Χμερ, Χμονγκ, τουρκμενικά, γλώσσα της μετάφρασης.

Copyright ©2024 I Love Translation. All reserved.

E-mail: