if bedingungen erweitern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
bot
code
date
datum
eingabe
eintrag
eintragen
email
feld
filter
funktion
http
injektion
programm
rechte passwort
register
server
uhrzeit
url
zutun
-
Hallo Zusammen,
Neulich hat jemand versucht meinen Server zu hacken. (abgesprochen) , dazu hat er ein Programm genutzt das automatisierte Angriffe durchzieht. Damit wollte ich testen ob es noch irgendwo möglich ist den Server mittles Javascript oder einer MysQl Injektion zu manipluieren.
Lange rede kurzer sinn:
Nach ein paar Tagen bemerkte ich das das Programm auch die Register inputs angegriffen hat mit diversen Javascript codes und Windows verzeichnissen von irgendwelchen .ini Datein.
Also wollte ich gerne noch meine if Bedingungen erweitern das wenn ein User beim Registrieren HTML,PHP oder Javascript eingeht das die Regisitrierung fehlschlägt und kein eintrag in MySQl vorgenommen wird.
Also quasi if $text == "html,ect"
{
echo"Try again";
}
Aber leider weis ich nicht wie ich das so Filtern kann hier ist mal der Register code:
elseif($action == "register"){ if(isset($_POST["register"])){ include("connection.php"); $username = mysql_real_escape_string(htmlspecialchars($_POST["regestrierung_username"])); $email = mysql_real_escape_string(htmlspecialchars($_POST["regestrierung_email"])); $passcode = mysql_real_escape_string(htmlspecialchars(hash("sha512",$_POST["regestrierung_passwort"]))); $gbaktiv = "Ja"; $emailaktiv ="Nein"; $Datum = date("d.m.y"); $Uhrzeit = date("H:i:s"); $Date = $Datum ." - " . $Uhrzeit; $ip = getenv ("REMOTE_ADDR"); $rechte = "User"; if ($username == "" OR $email == "" OR $passcode == "") { echo "<p align='center'><font color='red'><b>Bitte füllen sie alle Felder aus!</b></font></p> "; } else { echo "<script> alert('Registrierung erfolgreich abgeschlossen!\\n Sie können sich jetzt einloggen!'); </script>"; $eintrag = "INSERT INTO users (rechte,passwort,username,email,ip,regestrierdatum,gbaktiv,emailaktiv) VALUES ('$rechte', '$passcode', '$username', '$email', '$ip', '$Date', '$gbaktiv', '$emailaktiv')"; $eintragen = mysql_query($eintrag); } }
LG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Also bei dir irgendwelche Files hochladen über ein
Feld wäre mir bis jetzt noch nicht bekannt gewesen. Was aber sein kann ist, dass er über unsauber geprüfte Felder Lokale Dateien geladen bzw manipuliert hat, könnte mir vorstellen, dass das mit gewissen Kenntnissen (und unsicheren Formen) möglich ist.<input type="text" value="" />
JavaScript und cracken? JavaScript wird Clientseitig und nicht Serverseitig ausgeführt. (Bitte belehrt mich, wenn ich damit falsch liege, danke)
Grüße -
themind schrieb:
Es kommt drauf an, wass dort mit JavaScript/HTML eingeführt wurde.
Willst du verhindern dass ein Bot sich automatisch registriert? Captcha.
HTML-Eingaben hast du doch bereits erfolgreich mit htmlspecialchars() weggemacht,
ansonsten gibt es da nichts zutun.
Hier gibt es erheblich viel zu tun!
Zunächst sollten veraltete(deprecated) Funktionen wie $eintragen = mysql_query($eintrag); durch aktuellere Funktionen ersetzt werden. Die mysqli-Funktionen, noch besser PDO, in Verbindung mit Prepared Statement gewährleisten einen hohen Schutz vor SQL-Injektionen.
Captchas sind für Bots nicht wirklich ein Problem.
Interessant wäre der Eintrag(Injektion) in der/den Datenbanktabelle(n), denn dann lassen sich Rückschlüsse auf das/die schwache(n) Script(e) ziehen.
-
Hallo!
Ja ich filter derzeit schon alle POST und GET methoden mit mysql_real_escape_string und htmlspecialchars aus.
Doch ich suche eine möglichkeit das er das Gefilterte nicht in die Datenbank einträgt so das ich dann nicht als username habe <a href="#">FETTE WERBUNG</a> als Beispiel genommen.
Wie sind denn diese neure methoden aufgebaut? :)
LG -
zu mysqli (optimalerweise mit prepared statements) kann ich dir diese beschreibung empfehlen:
http://www.phpbuddy.eu/mysqli-erweiterung-php-5.html
du könntest auch die php Sanitize filters einsetzen:
http://php.net/manual/en/filter.filters.sanitize.php
oder auch z.b. per hand überprüfen ob deine einzutragenden variablen anders sind als die urspünglich übertragenen POST-Variablen:
<?php elseif($action == "register"){ if(isset($_POST["register"])){ include("connection.php"); $username = mysql_real_escape_string(htmlspecialchars($_POST["regestrierung_username"])); $email = mysql_real_escape_string(htmlspecialchars($_POST["regestrierung_email"])); $passcode = mysql_real_escape_string(htmlspecialchars(hash("sha512",$_POST["regestrierung_passwort"]))); $gbaktiv = "Ja"; $emailaktiv ="Nein"; $Datum = date("d.m.y"); $Uhrzeit = date("H:i:s"); $Date = $Datum ." - " . $Uhrzeit; $ip = getenv ("REMOTE_ADDR"); $rechte = "User"; if($username=="" or $email=="" or $passcode=="") { echo "<p align='center'><font color='red'><b>Bitte füllen sie alle Felder aus!</b></font></p>"; }elseif($_POST["regestrierung_username"]!=$username or $_POST["regestrierung_email"]!=$email) { echo "<p align='center'><font color='red'><b>Bitte benutzen Sie nur erlaubte Zeichen!</b></font></p>"; }else { echo "<script> alert('Registrierung erfolgreich abgeschlossen!\\n Sie können sich jetzt einloggen!'); </script>"; $eintrag = "INSERT INTO users (rechte,passwort,username,email,ip,regestrierdatum,gbaktiv,emailaktiv) VALUES ('$rechte', '$passcode', '$username', '$email', '$ip', '$Date', '$gbaktiv', '$emailaktiv')"; $eintragen = mysql_query($eintrag); } } } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage