SQL Injection über IP?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
administrator
aufwand
benutzen
bleiben
dank
eigentliche frage
filter
frage
http
manual
nachteil
nummer
passieren
punkt
server
sicher gehen
statement
url
vorteil
zahl
-
Hallo Limas
Heut mal ne etwas doofere Frage von mir..
(als ob ich auch Fragen stellen würd, die nicht doof sind )
Zur Frage an sich:
Ist es möglich eine SQL-Injection über die eigene IP durchzuführen?
Also ich meine das so:
mein Script speichert/verwendet die IP des Besuchers und verarbeitet diesse unter anderem mit Mysql.
Kann nun ein potentieller Angreifer seine eigene IP so "verfälschen" dass er damit quasi eine SQL Injection o.A. durführen kann?
ist es übehaupt möglich mit irgend einer "fiktifen" IP zu surfen? Also dass quasi die IP als "OR 1=1" erkannt wird?
Und wenn ja, kann er (der potentielle Anreifer) dem System auch die IP von anderen Usern, z.B. die des Administrators "vortäuschen"?
Danke für eure Hilfe.
Gruss Paddy
Beitrag zuletzt geändert: 16.9.2012 9:02:16 von paddy-herrmy -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
paddy-herrmy schrieb:
Theoretisch schon, das ganze nennt sich dann IP-Spoofing. Praktisch ist es jedoch so, dass sowas oft von Routern oder ISP's unterbunden wird. Zudem kommt, dass das ganze dann eine Einweg-Kommunikation wäre. ( Denn der Server sendet die Pakete an die vorgetäuschte IP, anstelle des eigentlichen Senders. ) Aber für eine Injection reicht das ja prinzipiell aus.
ist es übehaupt möglich mit irgend einer "fiktifen" IP zu surfen? Also dass quasi die IP als "OR 1=1" erkannt wird?
Und wenn ja, kann er (der potentielle Anreifer) dem System auch die IP von anderen Usern, z.B. die des Administrators "vortäuschen"?
-
Ja und nein. Eigentlich aber nein. Die IP wird meineswissens aus dem IP Container, welcher um dein TCP Packet geschnürt ist ausgelesen, und diese IP hat nur eine bestimmte Bit-Breite (4Byte im IPv4). Also geht es nicht, eine IP und ein anhängsel gleichzeitig darein zu schreiben. Ich glaube, nichtmal über die Forwarded-For header kann ein solches eingeschleust werden, denn auch hier werden nur die ersten 4Byte gelsen (was eigentlich auch schon schädlich sein könnte, mit pech).
An sich würd ich sowas auch validieren, besser ists. Aber mir ist nicht bekannt, dass man hier eine Injection drüber laufen lassen kann.
Liebe Grüße -
Solange die Server-Software nicht Fehlerhaft ist, sollte das unmöglich sein.
Beim Auswerten von X-Forwarded-For musst du aufpassen, da dieser vom Client gesendet werden und somit auch manipuliert werden kann. -
Die eigentliche Frage wurde ja bereits gut beantwortet. Ich möchte noch eine kleine Ergänzung bringen: Benutze am besten PDO mit Prepared statements. Dann können generell keine SQL Injections mehr passieren.
-
Danke für die zahlreichen Antworten.
bladehunter schrieb:
Die eigentliche Frage wurde ja bereits gut beantwortet. Ich möchte noch eine kleine Ergänzung bringen: Benutze am besten PDO mit Prepared statements. Dann können generell keine SQL Injections mehr passieren.
Hmm ich benutze momentan mysql_real_escape_string reicht das nicht?
uund natürlich auch andere Filter wie z.B. whitelist bei benutzerangaben, wie id nur zahlen zulassen etc.
Gruss paddy -
bladehunter schrieb:
Benutze am besten PDO mit Prepared statements. Dann können generell keine SQL Injections mehr passieren.
Da jedoch Prepared Statements nicht immer (zB wenn du einen Query nur einmal ausführst) das beste sind, gibt es in PDO noch diesen schönen Modifier: PDO::ATTR_EMULATE_PREPARES
Damit werden dann Prepared Statements nur emuliert und der Nachteil durch den unnötigen Overhead bei zB nur einem INSERT ist weg, aber die Vorteile bleiben.
paddy-herrmy schrieb:
Hmm ich benutze momentan mysql_real_escape_string reicht das nicht?
uund natürlich auch andere Filter wie z.B. whitelist bei benutzerangaben, wie id nur zahlen zulassen etc.
Ja das sollte eigentlich reichen.
Aber vielleicht weiß bladehunter ja noch was. -
paddy-herrmy schrieb:
Hmm ich benutze momentan mysql_real_escape_string reicht das nicht?
Dann musst du aber darauf achten, dass du das überall verwendest. Und es ist ein recht langer Funktionsname.
Da sollte man lieber auf Nummer Sicher gehen und einfach immer PDO benutzen. Dann übersieht man auch nichts.
uund natürlich auch andere Filter wie z.B. whitelist bei benutzerangaben, wie id nur zahlen zulassen etc.
Viel zu viel Aufwand meiner Ansicht nach. Nimm einfach PDO und damit hast du alles abgedeckt.
philippkern schrieb:
Da jedoch Prepared Statements nicht immer (zB wenn du einen Query nur einmal ausführst) das beste sind, gibt es in PDO noch diesen schönen Modifier: PDO::ATTR_EMULATE_PREPARES
Damit werden dann Prepared Statements nur emuliert und der Nachteil durch den unnötigen Overhead bei zB nur einem INSERT ist weg, aber die Vorteile bleiben.
Den Modifier habe ich bisher nicht gekannt. Und man kann den gerne nutzen, wenn man die Performance optimieren will.
Aber selbst wenn es den Modifier nicht geben würde, würde es sich lohnen PDO zu benutzen, weil es die Sicherheit einer Webanwendung mit wenig Aufwand verbessert. Wenn dafür etwas mehr Rechenpower erforderlich ist, ist das ein guter Kompromiss.
Beitrag zuletzt geändert: 16.9.2012 19:14:24 von bladehunter -
Alles klar, ich danke für die Zahreichen antworten..
Ich denke schaden kann es trotzdem nicht, wenn ich als IP nur Zahlen und Punkte durchgehen lasse
bladehunter schrieb:
paddy-herrmy schrieb:
Hmm ich benutze momentan mysql_real_escape_string reicht das nicht?
Dann musst du aber darauf achten, dass du das überall verwendest. Und es ist ein recht langer Funktionsname.
Da sollte man lieber auf Nummer Sicher gehen und einfach immer PDO benutzen. Dann übersieht man auch nichts.
Alles klar, ich werde mich da mal reinlesen, und schauen wie ichs umsetzen werde, Danke für den Tipp
Gruss Paddel -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage