Hilfe bei Webseiten Sicherheit
|
Verfasser |
Nachricht |
|
Beiträge: 462
Bewertung: 2
Registriert seit: Nov 2012
Status:
offline
|
RE: Hilfe bei Webseiten Sicherheit
Was er mein ist soetwas, damits weniger Code ist:
<?php //Neuer globale Arrays erstellen, die ungesicherte Daten enthalten $_UNSAFE_POST = array(); $_UNSAFE_GET = array(); $_UNSAFE_COOKIE = array(); //Gefahren in dem globalen Array Post entschärfen foreach ($_POST as $var => $value) { $_UNSAFE_POST[$var] = $value; if (!is_array($value)) { $value = trim ($value); } else { $value = ''; } $value = htmlspecialchars ($value, ENT_QUOTES, 'UTF-8'); $value = strip_tags ($value); $value = stripslashes ($value); $value = mysql_real_escape_string ($value); $_POST[$var] = $value; } //Gefahren in dem globalen Array Get entschärfen foreach ($_GET as $var => $value) { $_UNSAFE_GET[$var] = $value; if (!is_array($value)) { $value = trim ($value); } else { $value = ''; } $value = htmlspecialchars ($value, ENT_QUOTES, 'UTF-8'); $value = strip_tags ($value); $value = stripslashes ($value); $value = mysql_real_escape_string ($value); $_GET[$var] = $value; } //Gefahren in dem gloablen Array Cookie entschärfen foreach ($_COOKIE as $var => $value) { $_UNSAFE_COOKIE[$var] = $value; if (!is_array($value)) { $value = trim ($value); } else { $value = ''; } $value = htmlspecialchars ($value, ENT_QUOTES, 'UTF-8'); $value = strip_tags ($value); $value = stripslashes ($value); $value = mysql_real_escape_string ($value); $_COOKIE[$var] = $value; } ?>
$_UNSAFE_POST verwendet man ganz normal für Vergleiche, Darstellung
$POST verwendet man in verbindug mit Datenbank
Haste Error Reporting eingeschalten?
Mach mal alle 5 Zeilen ein die("Test"); und nehme dann beginnend von vorne alles nacheinander weg, um heraus zu finden wo der 500 zustande kommt.
//Edit:
Sehe gerade im Link zuvor das EscapeString depricated ist. Es steht aber auch dabei welche Methode stattdessen zu verwenden ist.
Freundliche Grüße,
[Link: Registrierung erforderlich]
Full Stack Software Engineer & Architekt
Sprachen: C#, TSQL, HTML5, Ecmascript 6, CSS 3.1, (TS, C++, PHP)
Frameworks: .NET, .NET Core, ASP.NET MVC, ASP.NET WebApi, WPF, WCF, Entity Framework, Bootstrap
Dieser Beitrag wurde zuletzt bearbeitet: 13.02.2013 23:11 von GGSeSports.
|
|
13.02.2013 23:01 |
|
|
Beiträge: 398
Bewertung: 1
Registriert seit: Feb 2008
Status:
offline
|
RE: Hilfe bei Webseiten Sicherheit
Also aktuell weiß ich gerade nicht was ich machen soll.
Bin ein wenig verwirrt versuche die Error log auszulesen komme aber aktuell nicht daran
Fehler ist laut Error Log
PHP Parse error: syntax error, unexpected ';' in /beta/eintragen.php on line 160,
Ganze nochmal neu geschrieben nun so
<?php include 'heartbeat.php';
$username = ''; if (isset ($_POST['username'])) { $username = $_POST["username"]; } else { die('Kein Benutzer Übergeben'); } $sqlSecureUsername = mysql_real_escape_string($username);
$passwort = ''; if (isset ($_POST['passwort'])) { $passwort = $_POST["passwort"]; } else { die('Kein Passwort Übergeben'); }
$passwort2 = ''; if (isset ($_POST['passwort2'])) { $passwort2 = $_POST["passwort2"]; } else { die('Kein Passwort2 Übergeben'); }
$email = ''; if (isset ($_POST['email'])) { $email = $_POST["email"]; } else { die('Keine Email Übergeben'); } $sqlSecureEmail = mysql_real_escape_string($email);
$marke = ''; if (isset ($_POST['marke'])) { $marke = $_POST["marke"]; } else { die('Keine Marke Übergeben'); } $sqlSecureMarke = mysql_real_escape_string($marke);
$modell = ''; if (isset ($_POST['modell'])) { $modell = $_POST["modell"]; } else { die('Kein Modell Übergeben'); } $sqlSecureModell = mysql_real_escape_string($modell);
$bj = ''; if (isset ($_POST['bj'])) { $bj = $_POST["bj"]; } else { die('Kein Baujahr Übergeben'); } $sqlSecureBj = mysql_real_escape_string($bj);
$ps = ''; if (isset ($_POST['ps'])) { $ps = $_POST["ps"]; } else { die('Keine PS Zahl Übergeben'); } $sqlSecurePs = mysql_real_escape_string($ps);
$hubraum = ''; if (isset ($_POST['hubraum'])) { $hubraum = $_POST["hubraum"]; } else { die('Kein Hubraum Übergeben'); } $sqlSecureHubraum = mysql_real_escape_string($hubraum);
$color = ''; if (isset ($_POST['color'])) { $color = $_POST["color"]; } else { die('Keine Farbe Übergeben'); } $sqlSecureColor = mysql_real_escape_string($color);
$fahrwerk = ''; if (isset ($_POST['fahrwerk'])) { $fahrwerk = $_POST["fahrwerk"]; } else { die('Kein Fahrwerk Übergeben'); } $sqlSecureFahrwerk = mysql_real_escape_string($fahrwerk);
$felgen = ''; if (isset ($_POST['felgen'])) { $felgen = $_POST["felgen"]; } else { die('Keine Felgen Übergeben'); } $sqlSecureFelgen = mysql_real_escape_string($felgen);
$interieur = ''; if (isset ($_POST['interieur'])) { $interieur = $_POST["interieur"]; } else { die('Kein Interieur Übergeben'); } $sqlSecureInterieur = mysql_real_escape_string($interieur);
$ext = ''; if (isset ($_POST['ext'])) { $ext = $_POST["ext"]; } else { die('Kein Exterieur Übergeben'); } $sqlSecureExt = mysql_real_escape_string($ext);
$disc = ''; if (isset ($_POST['disc'])) { $disc = $_POST["disc"]; } else { die('Keine Beschreibung Übergeben'); } $sqlSecureDisc = mysql_real_escape_string($disc);
if($passwort != $passwort2) { echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>"; exit; } $passwort = md5($passwort); $sqlSecurePasswort = mysql_real_escape_string($passwort);
$result = mysql_query("SELECT id FROM login WHERE username LIKE '$sqlSecureUsername"); $menge = mysql_num_rows($result);
if($menge == 0) { $eintrag = "INSERT INTO login (username, passwort, email, marke, modell, bj, ps, hubraum, color, fahrwerk, felgen, interieur, ext, disc) VALUES ('$sqlSecureUsername', '$sqlSecurePasswort', '$sqlSecureEmail', '$sqlSecureMarke', '$sqlSecureModell', '$sqlSecureBj', '$sqlSecurePs', '$sqlSecureHubraum', '$sqlSecureColor','$sqlSecureFahrwerk', '$sqlSecureFelgen', '$sqlSecureInterieur', '$sqlSecureExt', '$sqlSecureDisc')";
$eintragen = mysql_query($eintrag)or die(mysql_error());
$datei = $_FILES['datei']['name']; $dateityp = GetImageSize($_FILES['datei']['tmp_name']); if($dateityp[2] != 0) {
if($_FILES['datei']['size'] < 1024000000) { move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']); $eintrag = "UPDATE login Set bild1 = '$datei' WHERE username = '$username'"; $eintragen = mysql_query($eintrag); }
else { echo "Das Bild darf nicht größer als 100 kb sein "; }
}
else { echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen"; }
$datei2 = $_FILES['datei2']['name']; $dateityp = GetImageSize($_FILES['datei2']['tmp_name']); if($dateityp[2] != 0) {
if($_FILES['datei2']['size'] < 1024000000) { move_uploaded_file($_FILES['datei2']['tmp_name'], "upload/".$_FILES['datei2']['name']); $eintrag = "UPDATE login Set bild2 = '$datei2' WHERE username = '$sqlSecureUsername'"; $eintragen = mysql_query($eintrag); }
else { echo "Das Bild darf nicht größer als 100 kb sein "; }
}
else { echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen"; }
$datei3 = $_FILES['datei3']['name']; $dateityp = GetImageSize($_FILES['datei3']['tmp_name']); if($dateityp[2] != 0) {
if($_FILES['datei3']['size'] < 1024000000) { move_uploaded_file($_FILES['datei3']['tmp_name'], "upload/".$_FILES['datei3']['name']); $eintrag = "UPDATE login Set bild3 = '$datei3' WHERE username = '$sqlSecureUsername'"; $eintragen = mysql_query($eintrag); }
else { echo "Das Bild darf nicht größer als 100 kb sein "; }
}
else { echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen"; }
$datei4 = $_FILES['datei4']['name']; $dateityp = GetImageSize($_FILES['datei4']['tmp_name']); if($dateityp[2] != 0) {
if($_FILES['datei4']['size'] < 1024000000) { move_uploaded_file($_FILES['datei4']['tmp_name'], "upload/".$_FILES['datei4']['name']); $eintrag = "UPDATE login Set bild4 = '$datei4' WHERE username = '$sqlSecureUsername'"; $eintragen = mysql_query($eintrag); }
else { echo "Das Bild darf nicht größer als 100 kb sein "; }
}
else { echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen"; }
$datei5 = $_FILES['datei5']['name']; $dateityp = GetImageSize($_FILES['datei5']['tmp_name']); if($dateityp[2] != 0) {
if($_FILES['datei5']['size'] < 1024000000) { move_uploaded_file($_FILES['datei5']['tmp_name'], "upload/".$_FILES['datei5']['name']); $eintrag = "UPDATE login Set bild5 = '$datei5' WHERE username = '$sqlSecureUsername'"; $eintragen = mysql_query($eintrag); }
else { echo "Das Bild darf nicht größer als 100 kb sein "; }
}
else { echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen"; }
if($eintragen == true) { echo "Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>"; } else { echo "Fehler beim Speichern des Benutzernames. <a href=\"eintragen.html\">Zurück</a>"; }
}
else { echo "Benutzername schon vorhanden. <a href=\"eintragen.html\">Zurück</a>"; }
?>
So klappts...
Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2013 02:14 von Fredix.
|
|
14.02.2013 00:14 |
|
|
Beiträge: 462
Bewertung: 2
Registriert seit: Nov 2012
Status:
offline
|
RE: Hilfe bei Webseiten Sicherheit
Aufgrund deiner PN habe ich jetzt nochmal schnell drüber geschaut. Sofern jeder MySQL Query nur Variablen in Saver Form (also Variablen mit Secure im Namen) vorhanden sind, ist dieser wirklich sicher. Sorry will mir nicht jede Abfrage anschauen, sieht aber auf den ersten Blick gut aus.
Folgende Ergänzung sollte Ursprünglich gepostet werden, kannst du aber derzeit gedroßt ignorieren:
Wie bereits erwähnt wird allerdings mysql_real_escape_string nicht mehr in Zukunft unterstützt. Solange keine Fehlermeldung kommt kannst du diese nehmen.
Ansonsten solltest du folgende Methode verwenden:
- So entweder ich bin dumm oder dass steht nicht mehr da:
[Link: Registrierung erforderlich]
Ursprünglich stand hier, welche Methode verwendet werden soll. Aber irgendwie ist es nicht mehr da. Also wenns nicht mehr funktioniert, dann diese Website öffnen, da sollte die Alternative stehen.
Freundliche Grüße,
[Link: Registrierung erforderlich]
Full Stack Software Engineer & Architekt
Sprachen: C#, TSQL, HTML5, Ecmascript 6, CSS 3.1, (TS, C++, PHP)
Frameworks: .NET, .NET Core, ASP.NET MVC, ASP.NET WebApi, WPF, WCF, Entity Framework, Bootstrap
Dieser Beitrag wurde zuletzt bearbeitet: 14.02.2013 04:54 von GGSeSports.
|
|
14.02.2013 04:53 |
|
|
Beiträge: 398
Bewertung: 1
Registriert seit: Feb 2008
Status:
offline
|
RE: Hilfe bei Webseiten Sicherheit
Hey habe einen Fehler gefunden und weiß nicht woran es liegt vllt könnt ihr mir helfen.
Es handelt sich um diese Funktion
$result = mysql_query("SELECT id FROM login WHERE username LIKE '$sqlSecureUsername"); $menge = mysql_num_rows($result);
if($menge == 0) {
Diese verhindert normalerweise das es mehrere User mit dem gleichen Username gibt jedoch funktioniert diese nun nicht mehr seit Escape woran liegt das?
|
|
15.02.2013 22:59 |
|
|
Beiträge: 2.492
Bewertung: 29
Registriert seit: Jul 2010
Status:
offline
|
RE: Hilfe bei Webseiten Sicherheit
("SELECT id FROM login WHERE username LIKE '$sqlSecureUsername")
Fehlt abschließendes Single Quote.
Ein Tipp / Bitte: Nutze für PHP Codes etc. pastebin.com - das hier ist schrecklich.
Desweiteren solltest du `id` FROM `login` schreiben - alternativ PDO Statements.
Mit freundlichen Grüßen / Best Regards
Julian Weiler | Geschäftsführender Gesellschafter
[Link: Registrierung erforderlich] ist außerdem bei [Link: Registrierung erforderlich], [Link: Registrierung erforderlich] und [Link: Registrierung erforderlich]
Telefon: +49 (0) 67 74 / 20 49 520
Fax: +49 (0) 67 74 / 20 49 520 9
E-Mail: [Mail: Registrierung erforderlich]
|
|
15.02.2013 23:13 |
|
|
Beiträge: 398
Bewertung: 1
Registriert seit: Feb 2008
Status:
offline
|
RE: Hilfe bei Webseiten Sicherheit
Ah okay vielen dank jetzt fällt es mir wie schuppen von den Augen xD
Weißt du en gutes Bilder Multiupload Tutorial?
Weil das so immer ziemlich lange dauert
|
|
15.02.2013 23:20 |
|
|
Beiträge: 398
Bewertung: 1
Registriert seit: Feb 2008
Status:
offline
|
RE: Hilfe bei Webseiten Sicherheit
Ich habe nun ein Update geschrieben wo nur wenn alles iO ist also auch die Bilder alles in die Datenbank geschrieben wird nur wenn ich das Script nun so laufen lasse läuft es in einen Error und sagt mir in Line 322 also in meinem Else ist ein fehler vor Benutzer Name anlegen
$tempname = $_FILES['datei']['tmp_name']; $name = md5(filesize($tempname).microtime()); $name1 = $name.".jpg"; $type = $_FILES['datei']['type']; $size = $_FILES['datei']['size']; if (empty($size)) { $name1 = ''; } else { if($type != "image/png" && $type != "image/jpeg") { $err[] = "Bild1 entspricht keiner png oder jpg/jpeg datei!."; } if($size > "4194304") { $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!"; } if(empty($err)) { move_uploaded_file($tempname, "upload/".$name1); } else { foreach($err as $error) echo "$error<br>"; } } $tempname = $_FILES['datei2']['tmp_name']; $name = md5(filesize($tempname).microtime()); $name2 = $name.".jpg"; $type = $_FILES['datei2']['type']; $size = $_FILES['datei2']['size']; if (empty($size)) { $name2 = ''; } else { if($type != "image/png" && $type != "image/jpeg") { $err[] = "Bild2 entspricht keiner png oder jpg/jpeg datei!."; } if($size > "4194304") { $err[] = "Das Bild2 welches du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!"; } if(empty($err)) { move_uploaded_file($tempname, "upload/".$name2); } else { foreach($err as $error) echo "$error<br>"; } } $tempname = $_FILES['datei3']['tmp_name']; $name = md5(filesize($tempname).microtime()); $name3 = $name.".jpg"; $type = $_FILES['datei3']['type']; $size = $_FILES['datei3']['size']; if (empty($size)) { $name3 = ''; } else { if($type != "image/png" && $type != "image/jpeg") { $err[] = "Bild3 entspricht keiner png oder jpg/jpeg datei!."; } if($size > "4194304") { $err[] = "Das Bild3 welches du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!"; } if(empty($err)) { move_uploaded_file($tempname, "upload/".$name3); } else { foreach($err as $error) echo "$error<br>"; } } $tempname = $_FILES['datei4']['tmp_name']; $name = md5(filesize($tempname).microtime()); $name4 = $name.".jpg"; $type = $_FILES['datei4']['type']; $size = $_FILES['datei4']['size']; if (empty($size)) { $name4 = ''; } else { if($type != "image/png" && $type != "image/jpeg") { $err[] = "Bild4 entspricht keiner png oder jpg/jpeg datei!.";
} if($size > "4194304") { $err[] = "Das Bild4 welches du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!";
} if(empty($err)) { move_uploaded_file($tempname, "upload/".$name4); } else { foreach($err as $error) echo "$error<br>"; } } $tempname = $_FILES['datei5']['tmp_name']; $name = md5(filesize($tempname).microtime()); $name5 = $name.".jpg"; $type = $_FILES['datei5']['type']; $size = $_FILES['datei5']['size']; if (empty($size)) { $name5 = ''; } else { if($type != "image/png" && $type != "image/jpeg") { $err[] = "Bild5 entspricht keiner png oder jpg/jpeg datei!."; } if($size > "4194304") { $err[] = "Das Bild5 welches du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 4MegaByte!"; } if(empty($err)) { move_uploaded_file($tempname, "upload/".$name5); } else { foreach($err as $error) echo "$error<br>"; } } if($menge == 0 && empty($err)) { $eintrag = "INSERT INTO login (username, passwort, email, marke, modell, bj, ps, hubraum, color, fahrwerk, felgen, interieur, ext, disc, bild1, bild2, bild3, bild4, bild5) VALUES ('$sqlSecureUsername', '$sqlSecurePasswort', '$sqlSecureEmail', '$sqlSecureMarke', '$sqlSecureModell', '$sqlSecureBj', '$sqlSecurePs', '$sqlSecureHubraum', '$sqlSecureColor','$sqlSecureFahrwerk', '$sqlSecureFelgen', '$sqlSecureInterieur', '$sqlSecureExt', '$sqlSecureDisc', '$name1', '$name2', '$name3', '$name4', '$name5')"; $eintragen = mysql_query($eintrag)or die(mysql_error()); }
Wo liegt mein Denk fehler?
|
|
18.02.2013 17:39 |
|
|