Hallo,
in einem Projekt von mir wird eine Information aus der URL per GET abgefragt.
Danach wird die Information mit der aus einer MySQL Datenbank abgeglichen.
Das sieht dann ungefähr so aus:
localhost/verkaufen.php?item=Wolle
Nun habe ich gelesen, dass man sich vor Eingaben schützen sollte, die Befehle einschleusen.
Reicht das, wenn ich das folgendermaßen mache?
Ja ich habe es schon mit "SQL Injection Scanner Tools" versucht, die haben angeblich nix gefunden, aber ich bin mir da nicht so sicher deswegen frage ich mal aber danke für die Antwort^^
Hallo,
in einem Projekt von mir wird eine Information aus der URL per GET abgefragt.
Danach wird die Information mit der aus einer MySQL Datenbank abgeglichen.
Das sieht dann ungefähr so aus:
localhost/verkaufen.php?item=Wolle
Nun habe ich gelesen, dass man sich vor Eingaben schützen sollte, die Befehle einschleusen.
Reicht das, wenn ich das folgendermaßen mache?
mm ich kenn zwar die php regexp sytax nicht aber wenn "/[^a-zA-Z0-9_\-]+/" dafür sorgt das nur buchstaben, ziffern und die - ,_ zeichen zugelassen werden ist das genug, dann bruchst du auch mysql_real_escape_string nicht mehr.
Ja ich habe es schon mit "SQL Injection Scanner Tools" versucht, die haben angeblich nix gefunden, aber ich bin mir da nicht so sicher deswegen frage ich mal aber danke für die Antwort^^
Die sind normalerweise eig. recht genau, aber manuell ist immernoch am besten.
verwende doch einfach mysql_real_escape_string(), das eigentlich das beste was du tun kannst ^^
nein wenn man nicht unbedingt sonderzeichen braucht (und das ist meistens der fall) ist eine eigene funtion (die alle zeichen ausser Ziffren und Buchstaben löscht) wie er sie hat besser
Ja, nur im Normalfall verwendet man auch Sonderzeichen ^^, es kommt halt immer auf den Anwendungsort an.
man kann die whitelist natürlich um "harmlose" sonderzeichen erweitern.
und das reicht dan wirklich für 90% der fälle.
das problem bei mysql_real_escape_string() ist, das die db ja nicht das ende ist, sondern das die daten danach auchnoch weiterverwendet werden. und selbst wenn die daten ohne probeme in die db kommen, kann das programm was die daten hinterher weiterverarbeitet damit probleme bekommmen und Sicherheitslücken öffnen.
Deswegen verwende ich bei jeder weiteren verarbeitung immer mysql_real_escape_string, dafür habe ich mir ne klasse gemacht und ich hab mich ziemlich daran gewöhnt, da alle abfragen dann einfach durch das gehen.
Also, denn geb' ich auch mal meinen Senf dazu:
Am besten verwendet man MySQLi prepared statements, dann hat man schonmal 'ne Typ-Abfrage, ohne wirklich was tun zu müssen.
mysql_real_escape_string, bzw. $mysqli->real_escape_string ist an sich 'ne gute Sache, funktioniert aber natürlich nur bei Strings. Wenn es sich bei der abgefragten get/post-Variable z.B. um einen Integer handelt, sollte man stattdessen intval() verwenden, etc.
Damit reservierte Ausdrücke nicht in jedem Fall einen Fehler schmeißen, schreibt man die Variablen am besten auch noch in Backticks.
Also im Endeffekt etwas wie:
Ich würde dir von msqli abraten. Ganz einfach: Es sind einfach nur "verbesserte" Versionen der normalen MySQL Funktionen, in OOP verpackt. Wenn du dir die Mühe machen solltest:
1.) Baue dir deine eigene DB Klasse mit der du das erreichst was du willst
2.) Oder benutz PDO. PDO bietet alles was mysql(i) bietet, ist universal einsetzbar, kommt mit fast allen Datenbanken von MySQL, MSSQL, PostGreSQL bis SQLite aus. Da biste auf der sicheren Seite.
Es sind einfach nur "verbesserte" Versionen der normalen MySQL Funktionen, in OOP verpackt.
Ganz genau. Und die Verbesserungen enthalten:
- Verschlüsselung (sichere Verbindung)
- Typvalidierung & Schutz vor SQL-Injections via prepared statements
Entsprechend ist es kein Wunder, dass von offizieller Seite her empfohlen wird, mysql nicht mehr zu verwenden und stattdessen mysqli einzusetzen.
Schutz gegen Telekill ! 07/24/2011 - Combat Arms - 71 Replies Hi leute
Ich habe einen schutz gegen telekiller gefunden die auf dem kopf zielen ( das sind ca 95% )
Und er funktionirt wie folgt.
Am besten habt ihr eine gerade wand vor euch ( 90° zum boden ). Jetzt drückt ihr um euch zu bücken und Kricht die ganze zeit zur wand hin. Das bringt das euer kopf in der wand ist, und da ein Telekiller vor euch ist und nicht durch wände messert = ihr bekommt kein Headshot.
Wenn ich euch geholfen habe Press ;D
Schutz gegen m32! 04/02/2011 - Combat Arms - 10 Replies Hej Com,
ihr findet es sicherlich jetzt witzig wegen dem anderen Thread
Schutz gegen Telekill! .
Aber ich habe auch noch ein Tip bei m32.
für den Trick braucht man bissel Übung und gute Zeiteinschätzung.
Mir ist vor paar Wochen mal aufgefallen das wen mich jemand mit einer m32
Angreift JUMP! , ja kein witz jump einfach ! es ist so wen er mit m32 auf dich schießt und du in diesem moment springst, zieht es entweder 0 ab oder -20 und bissel mehr. mir ist das aufgefallen als einer mich 4 mal...
[How To]Schutz gegen Hacks 08/02/2010 - Metin2 PServer Guides & Strategies - 33 Replies Hi,
Da mich diese Skilldmgvervielfältiger,Hit-Dmg usw nerven hab ich eine Lösung gefunden wie ihr sowas unnütz machen könnt.
Tutorial:
Erst müsst ihr euren Server mit einer eigenen Bin zugänglich machen Tut:
http://www.elitepvpers.com/forum/metin2-pserver-gu ides-strategies/587895-how-server-mit-nur-einer-bi n-zug-nglich-machen.html
So danach braucht ihr noch einen Patcher eure bin oder exe und einen File Binder.
Ich empfehle Shocklabs filebinder.
Links darf ich hier nicht posten müsst...
[HILFE]SQL-Injection Schutz 07/30/2010 - Metin2 Private Server - 2 Replies Hallo com,
Ich wurde mit SQL-Injection gehackt ( Meine Regi Page ) doch wen ich in meine Config daten rein gucke Steht das auch dranne :
$pwd = ($_POST) ;
$user = ($_POST) ;
ist das z.B. eine Lücke ?
wenn ja pnt mich und ich schick euch das was ihr rbraucht um mein Regi zu schützen ;(
[B]Gegen SQL Injection schützen 07/29/2010 - Coding Tutorials - 6 Replies Hey Leute,
Ich hab hier mal was nettes für euch.
Ich hab viele Metin2 Hp´s gesehen die sehr SQLI Infitierbar sind.
Und Geb euch hier mal einen Kleinen Quell Code der euch dafor schützen kann.
Es ist kein Tut nur ein Code die wo sich ein wenig aus kennen wissen wohhin damit :P
<?
# Funktion macht Befehle zur Eingabe in SQL-Strings sicher vor Injection, da durch die Eingabe gegebene ' gequoted werden