Sql-Injection-Proof-of-Concept
Version vom 7. Oktober 2020, 16:59 Uhr von Thomas.will (Diskussion | Beiträge) (→Unsichere Methode)
Test Seite
Unsichere Seite
Sichere Seite
Erläuterung
- Bei der Unsicheren Methode wird folgender Query abgesetzt.
- SELECT * FROM users WHERE username='$search';
- Wenn wir in die Variable Search folgendes schreiben
$search = ' or '1' = '1
- wird folgender Suchausdruck gebildet
- SELECT * FROM users WHERE username= or '1' = '1';
- da der 2. Ausdruck wahr ist, wid die ganze Tabelle ausgegeben.
Unsichere Methode
Sichere Methode
<?php
if(isset($_POST['submit'])){
//connect db
include "inc/connect.php";
//safe query
$search = mysqli_real_escape_string($link, $_POST['search']);
//Database search
$sql = "SELECT * FROM users WHERE username='$search'";
$result = mysqli_query($link, $sql);
}
?>
<!DOCTYPE html>
<html>
<body>
<h2>SQL Injection</h2>
<form method="post">
<label for="fname">Suche</label><br>
<input type="text" name="search"><br>
<input type="submit" name="submit" value="Suche">
</form>
<br>
<table border = "1">
<tr>
<td>ID</td>
<td>Name</td>
<td>Passwort</td>
</tr>
<?php
while ($row = mysqli_fetch_row($result)) {
echo "<tr>";
echo "<td>".$row[0]." </td>";
echo "<td>".$row[1]." </td>";
echo "<td>".$row[2]." </td><br>";
echo "</tr>";
}
?>
</table>
</body>
</html>

