Sicheres Script ?
Hallo,
ich habe meinen PHP code bisher eigentlich nicht für überragend gut, aber für sicher gehalten .
Nun scheinen wir aber irgendwo die Möglichkeit zur SQL Injection geschaffen zu haben.
Nachdem ich generell immer alle Eingaben für die Datenbank (sofern die Parameter nicht direkt aus der Datenbank kommen) immer gleich behandle, habe ich mal einen kleinen Beispielcode geschrieben.
Ich würde euch bitten, mal einen blick drauf zu werfen, ob jemandem hier ein möglicher Angriffsvektor auffällt.
Dass dieses Formular so gut für eine Bruteforceattacke geeignet ist, ist klar.
Danke schon mal für eure Antworten
ich habe meinen PHP code bisher eigentlich nicht für überragend gut, aber für sicher gehalten .
Nun scheinen wir aber irgendwo die Möglichkeit zur SQL Injection geschaffen zu haben.
Nachdem ich generell immer alle Eingaben für die Datenbank (sofern die Parameter nicht direkt aus der Datenbank kommen) immer gleich behandle, habe ich mal einen kleinen Beispielcode geschrieben.
Ich würde euch bitten, mal einen blick drauf zu werfen, ob jemandem hier ein möglicher Angriffsvektor auffällt.
Dass dieses Formular so gut für eine Bruteforceattacke geeignet ist, ist klar.
<?PHP
define('SQLHOST','localhost');
define('SQLPORT',3306);
define('SQLUSER','');
define('SQLPASS','');
define('SQLDBNAME','');
define('USER_TABLE','users');
// Diese Datei wird importiert
// https://github.com/ThingEngineer/PHP-MySQLi-Database-Class
require_once 'MysqliDb.php';
$db = new MysqliDb(SQLHOST,SQLUSER,SQLPASS,SQLDBNAME);
?>
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<title>Hello, world!</title>
</head>
<body>
<form method="post">
<div class="form-group">
<label for="user">Nutzername:</label>
<input type="text" name="user" id="user">
</div>
<div class="form-group">
<label for="user">Passwort:</label>
<input type="password" name="pass" id="pass">
</div>
<input type="submit" value="Absenden">
<input type="hidden" name="do" value="1">
</form>
<?PHP
if(isset($_POST['do']) && $_POST['do'] = "1")
{
$db->where('user',$db->escape($_POST['user']));
$db->where('pass',$db->escape(md5($_POST['pass'])));
$res = $db->getOne(USER_TABLE);
if(count($res) > 0)
{
echo "erfolgreich";
}else{
echo "fehlgeschlagen";
}
}
?>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
</body>
</html>
Danke schon mal für eure Antworten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 395958
Url: https://administrator.de/contentid/395958
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
14 Kommentare
Neuester Kommentar
Das ist auch nicht mal so schnell hingeschrieben und bringt "so" auch nichts.
Der beste Weg eine Anwendung sicher zu machen, ist zu verstehen, wie Sie anzugreifen ist. Da du nur irgendein Floskel Snippet geliefert hast, solltest du dich einlesen, wie man Webanwendungen angreift, um diese anschliessend zu härten.
VG
Der beste Weg eine Anwendung sicher zu machen, ist zu verstehen, wie Sie anzugreifen ist. Da du nur irgendein Floskel Snippet geliefert hast, solltest du dich einlesen, wie man Webanwendungen angreift, um diese anschliessend zu härten.
VG
Hallo,
dasvon abgesehen, was die anderen bemängelt haben. Ist md5 schon lange keine sichere Methode mehr um passwörter "verschlüsselt" zu speichern: https://secure.php.net/manual/de/faq.passwords.php#faq.passwords.fasthas ...
Besser so machen: https://secure.php.net/manual/de/function.password-hash.php und Argon2 verwenden.
Gruß
dasvon abgesehen, was die anderen bemängelt haben. Ist md5 schon lange keine sichere Methode mehr um passwörter "verschlüsselt" zu speichern: https://secure.php.net/manual/de/faq.passwords.php#faq.passwords.fasthas ...
Besser so machen: https://secure.php.net/manual/de/function.password-hash.php und Argon2 verwenden.
Gruß