Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 17:37
Hey könnte mir jemand einen gefallen tun und mir ein wenig helfen bei meiner Webseite?
Suche jemanden der sich gut mit Webseiten Sicherheit auskennt und mir gute Ratschläge geben kann am liebsten via Skype
Gruß Fredix
RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 18:11
Hey Fredix,
vielleicht solltest du dein Problem erst mal genauer beschreiben, dann können dir direkt die passenden helfen.
RE: Hilfe bei Webseiten Sicherheit - Storage-Base.de - 12.02.2013 18:14
Wie wäre es wenn du mal gewisse Code Auszüge Postest, uns beschreibst um was es genau geht etc. pp.
Grundlegend ist mal das Problem dass man ne Website auch in verschiedenen Script sprachen erstellen kann und du nicht angibst um welche es geht.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 18:15
Es handelt sich um PHP und MYSQL
Wenn sich jemand bereit erklärt würde ich ihm das Komplette Script zukommen lassen
RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 18:41
Wir kommen der Sache schon näher, wenn du jetzt noch schreibst was genau du dir unter "Sicherheit" vorstellst, dann ist die Lösung nicht mehr in weiter Ferne.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 18:44
Es geht mir hauptsächlich um die Spionage der Daten meiner User.
Mir wurde gesagt ich solle vermehrt auf mysql_real_escape_string setzen jedoch besitze ich gar keinen Login Bereich.
Würdest du dir meinen Code einmal ansehen auf Fehler bzw Lücken?
RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 18:50
Les mal das hier: Vielleicht hilft es dir ja schon mal weiter, bevor du auf diese Funktion setzt: [Link: Registrierung erforderlich]
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 18:56
Ich persönlich habe diese Funktion garnicht drinnen.
Daher meine Frage ob ich noch iwo drauf achten soll?
Habe POST, GET, SELECT,INSERT INTO und DELETE verwendet mehr eig nicht.
RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 18:58
Dann brauchst du dir eigentlich keine Gedanken zu machen mit diesen Funktionen.
Für noch mehr Sicherheit dann halt SSL-Zertifikat.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 18:59
Dürfte ich dir den mal den Code zukommen lassen damit du mal drüber gucken kannst ob alle iO ist?
RE: Hilfe bei Webseiten Sicherheit - web4free - 12.02.2013 19:02
Klar kannst du machen, schick es uns einfach per Mail an [email protected]
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 19:09
Habe Sie dir gemailt
RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 19:20
Sicherheitslücken können größten Teils nur durch folgende Variablen entstehen:
- POST
- GET
- REQUEST
Bei Verwendung dieser Variablen immer folgendes sicherstellen:
Datenbankabfragen:
mysql_real_escape_string zwingend verwenden. Thematik SQL Injections
Require / Include:
Falsch:
require('php/' . $_GET['seite'] . '.inc.php');
Richtig:
$whitelist = array ('aboutus','impressum', 'news'); if (isset ($_GET['seite']) && in_array($_GET['seite'], $whitelist) { require('php/' . $_GET['seite'] . '.inc.php'); } else { require('php/default.inc.php'); }
Boolische Werte:
$foo = false; if (isset($_GET['foo']) && $_GET['foo'] === 'true') { $foo = true; }
Ich denke mal, dass waren die größten Fehlerquellen.
Passwörter wären selbstverständlich zu hashen (Google "PHP SHA1")
Uploads wären zu Überprüfen (Google "PHP Detect Mime Type")
Sicherlich bist du in der Lage dies selbst zu checken, wenn du es selbst entwickelt hast. In diesem Fall wirst du denke ich auch niemanden finden der deine komplette Webseite untersucht. Zumindest nicht ohne angemessene Entlohnung.
Gegen bezalung würde ichs mir anschauen ;-)
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 19:52
Wie hoch soll diese bezahlung sein ?
RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 20:10
Wie hoch soll diese bezahlung sein ?
Du hast mich falsch verstanden. Ich wollte zum Ausdruck bringen, dass das eine Sache ist, mit der man sich auseinandersetzen sollte.
Ansonsten wäre es besser wenn man soetwas gleich in Auftrag gibt.
Wenn man ein anständiges Code Review macht, und jede Logik verstehen will, dauert das fast genauso lange, als würde man die Logik selber schreiben.
Wie umfangreich ist denn dein Projekt? Wenn es dir auf Sicherheit ankommt denke ich mal größer.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 20:29
Ist lediglich ein kleines Projekt mit wenig Script.
Ich will lediglich das bei dem script nichts passiert was den usern oder meiner Datenbank schadet
RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 20:35
Was ist das für ein kleines Script? Erweiterung für ein CMS? Was macht es?
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 20:42
Man kann sein Auto mit allen tuningsmaßnamen eintragen, die autos anderer user ansehen und die details sehen sowie liken
RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 21:10
Na dass kann ja dann noch gerade so hier im Forum gepostet werden
Dann kann man sich dass ganze auch mal anschauen.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 12.02.2013 21:17
user.php
<?php include 'heartbeat.php';
$user = $_GET["user"];
$abfrage = "SELECT * FROM login WHERE username = '$user'"; $ergebnis = mysql_query($abfrage)or die(mysql_error()); while($row = mysql_fetch_object($ergebnis)) { echo "<center><p><img src='/beta/upload/$row->bild1' width='600' height='400' /></p><br>"; echo "<a href='http://n3xd.eu/beta/bild.php?bild=$row->bild2&user=$user'><img src='http://n3xd.eu/beta/upload/$row->bild2' width='150' height='125' /></a><a href='http://n3xd.eu/beta/bild.php?bild=$row->bild3&user=$user'><img src='http://n3xd.eu/beta/upload/$row->bild3' width='150' height='125' /></a><a href='http://n3xd.eu/beta/bild.php?bild=$row->bild4&user=$user'><img src='http://n3xd.eu/beta/upload/$row->bild4' width='150' height='125' /></a><a href='http://n3xd.eu/beta/bild.php?bild=$row->bild5&user=$user'><img src='http://n3xd.eu/beta/upload/$row->bild5' width='150' height='125' /></a><br>"; echo "<a href='http://n3xd.eu/beta/bewertung.php?user=$user'>Like!</a><br>"; echo "<table border='0'><tr><td>Username </td><td>$row->username</td></tr><tr><td>Marke </td><td>$row->marke</td></tr><tr><td>Modell </td><td>$row->modell</td></tr><tr><td>PS </td><td>$row->ps</td></tr><tr><td>Baujahr </td><td>$row->bj</td></tr><tr><td>Farbe </td><td>$row->color</td></tr><tr><td>Felgen </td><td>$row->felgen</td></tr><tr><td>Fahrwerk </td><td>$row->fahrwerk</td></tr><tr><td>Interieur </td><td>$row->interieur</td></tr><tr><td>Exterieur </td><td>$row->ext</td></tr><tr><td>Beschreibung des Users</td><td>$row->disc</td></tr></table>"; $counter = mysql_num_rows(mysql_query("SELECT * FROM bewertung WHERE username='$user'")); echo "$counter </center>"; }
?>
eintragen.php
<?php include 'heartbeat.php';
$username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; $email = $_POST["email"]; $marke = $_POST["marke"]; $modell = $_POST["modell"]; $bj = $_POST["bj"]; $ps = $_POST["ps"]; $hubraum = $_POST["hubraum"]; $color = $_POST["color"]; $fahrwerk = $_POST["fahrwerk"]; $felgen = $_POST["felgen"]; $interieur = $_POST["interieur"]; $ext = $_POST["ext"]; $disc = $_POST["disc"];
if($passwort != $passwort2 OR empty($username) OR empty($passwort) OR empty($email) OR empty($marke) OR empty($modell) OR empty($bj) OR empty($disc)) { echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintragen.html\">Zurück</a>"; exit; } $passwort = md5($passwort);
$result = mysql_query("SELECT id FROM login WHERE username LIKE '$username'"); $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 ('$username', '$passwort', '$email', '$marke', '$modell', '$bj', '$ps', '$hubraum', '$color','$fahrwerk', '$felgen', '$interieur', '$ext', '$disc')";
$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 = '$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"; }
$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 = '$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"; }
$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 = '$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"; }
$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 = '$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"; }
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>"; }
?>
marke.php
<?php include 'heartbeat.php';
$markeb = $_GET["b"];
$abfrage = "SELECT * FROM login WHERE marke = '$markeb'"; $ergebnis = mysql_query($abfrage)or die(mysql_error()); while($row = mysql_fetch_object($ergebnis)) { echo "<center><a href='http://n3xd.eu/beta/user.php?user=$row->username'><img src='http://n3xd.eu/beta/upload/$row->bild1' width='500' height='300' /></a></center>"; }
?>
bewertung.php
<?php include 'heartbeat.php';
$ip=getenv("REMOTE_ADDR"); $user = $_GET["user"];
$test = mysql_query("SELECT * FROM bewertung WHERE ip='$ip' AND username='$user'"); if(mysql_num_rows($test) != 1) { mysql_query("INSERT INTO bewertung SET ip='$ip', username='$user'"); echo "Sie haben für den User $user geliked"; } else { echo "Sie haben bereits geliked"; }
?>
So das wars alles
RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 12.02.2013 23:24
Dein Code ist eine tickende Zeitbombe!
//user.php //Überprüfen ob User überhaupt vorhanden ist: $user = ''; if (isset ($_GET['user'])) { $user = $_GET["user"]; } /*ggf: else { die('Kein Benutzer Übergeben'); } */ //Daten Escapen $sqlSecureUser = mysql_real_escape_string($user); $abfrage = "SELECT * FROM login WHERE username = '$sqlSecureUser'"; $counter = mysql_num_rows(mysql_query("SELECT * FROM bewertung WHERE username='$sqlSecureUser'"));
//eintragen.php //Dass selbe Spiel: Überprüfen ob vorhanden, Escapen und SQL Query anpassen! $username = $_POST["username"]; $passwort = $_POST["passwort"]; $passwort2 = $_POST["passwort2"]; $email = $_POST["email"]; $marke = $_POST["marke"]; $modell = $_POST["modell"]; $bj = $_POST["bj"]; $ps = $_POST["ps"]; $hubraum = $_POST["hubraum"]; $color = $_POST["color"]; $fahrwerk = $_POST["fahrwerk"]; $felgen = $_POST["felgen"]; $interieur = $_POST["interieur"]; $ext = $_POST["ext"]; $disc = $_POST["disc"];
//marke.php //Selbes Spiel! $markeb = $_GET["b"];
//bewertung.php //Und nochmals. Bei der IP bin ich mir nicht sich, ob dass der Client verändern kann. Musst du mal googlen, aber schaden kanns nicht $ip=getenv("REMOTE_ADDR"); $user = $_GET["user"];
Wenn du die Änderungen vornimmst sollte es safe sein, du wirst jedoch noch Fehlermeldungen erhalten wenn deine SqlAbfrage kein Ergebnis zurückliefert. Dies solltest du unbedingt abfangen.
Ansonsten hast du noch ein paar schönheitsfehler drinne!
- Strings werden generell mit Hochkomma und nicht Doppelten Anführungszeichen angegeben. (Performance!)
- Verwende $_SERVER für IP
- Bei den Bilderupload hätts auch eine Schleife getan
- EVA Prinzip
- ...
RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 14:10
Ich habe das ganze jetzt mal in meine Eintragen.php eingefügt.
Nun klappt das eintragen nicht mehr -.-
Woran liegt es? Es zeigt keine Fehlermeldungen an sondern bleibt einfach weiß
<?php include 'heartbeat.php'; $username = ''; if (isset ($_POST['username'])) { $user = $_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.Passwörter sind nicht gleich! <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 = '$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 = '$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"; }
$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>"; }
?>
RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 13.02.2013 16:41
Auf den ersten Blick sehe ich jetzt keinen Fehler.
Überprüfe mal ob der überhaupt hier reinspringt:
<?php if($menge == 0) ?>
Eine ein echo 'test'; hier ausgeben.
Wäre aufjedenfall erst mal hilfreich zu wissen, woran das liegt.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 22:33
Bleibt beim gleichen Fehler
HTTP-Fehler 500 (Internal Server Error): Beim Versuch des Servers, die Anforderung zu verarbeiten, ist eine unerwartete Bedingung aufgetreten.
RE: Hilfe bei Webseiten Sicherheit - Storage-Base.de - 13.02.2013 22:37
error_log angucken
error_reporting(E_ALL)
Mit foreach kannst du auch alle POSTs und GETs aufeinmal mit nur einem Befehl prüfen und escapen lassen.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 22:38
Kannst du mir ein Konkretes Beispiel geben?
Versuche aktuell mit dem Script PHP ein wenig zu lernen
RE: Hilfe bei Webseiten Sicherheit - Sysix - 13.02.2013 22:42
[Link: Registrierung erforderlich]
ich frag mich welche PHP Version du hast... eine 2faches Escaping wäre fatal
Ich will ja niemanden anschauen, der den Tipp gegeben hat das zu benutzen
versuch mal nach der mysql_query mit "echo mysql_error();"
RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 22:45
Habe ich das nicht schon mit
$eintragen = mysql_query($eintrag)or die(mysql_error());
?
RE: Hilfe bei Webseiten Sicherheit - Sysix - 13.02.2013 22:47
Z.B.
$eintrag = "UPDATE login Set bild4 = '$datei4' WHERE username = '$sqlSecureUsername'";
$eintragen = mysql_query($eintrag);
RE: Hilfe bei Webseiten Sicherheit - Fredix - 13.02.2013 22:59
Dahinter setzen?
Oder wie meinst du das jetzt?
RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 13.02.2013 23:01
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.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 14.02.2013 00:14
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...
RE: Hilfe bei Webseiten Sicherheit - GGSeSports - 14.02.2013 04:53
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.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 15.02.2013 22:59
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?
RE: Hilfe bei Webseiten Sicherheit - Storage-Base.de - 15.02.2013 23:13
("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.
RE: Hilfe bei Webseiten Sicherheit - Fredix - 15.02.2013 23:20
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
RE: Hilfe bei Webseiten Sicherheit - Fredix - 18.02.2013 17:39
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?
|