|
| sd12 |
Geschrieben am: Fr 21.04.2006, 20:28
|
![]() AyomRank 9 Gruppe: Moderatoren Beiträge: 3581 Mitglied seit: 3.03.2004 |
Ich werde noch wahnsinnig.
Hab mir für eine neue App gute Vorsätze genommen und möchte MySQL Injection verhindern. Ich krieg es mit einem "INSERT INTO" nicht hin. Nun hab ich einen Verdacht... Ist es möglich, dass die Gefahr von SQL Injection nur bei "SELECT" Abfragen besteht? Wenn ja, hab ich 3 Stunden verblödet, wenn nein, wer kann mir ein Beispie machen? -------------------- ************************
Treiber f[r das Kezboard ist [berfl[ssig. |
![]() |
| Sascha Ahlers |
#2 Geschrieben am: Fr 21.04.2006, 21:42 (+01:14)
|
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1699 Mitglied seit: 27.12.2004 |
SQL-Injektionen können Grundlegend bei jeder Abfrage ausgenutzt werden, in welcher Du Variablen der Programmiersprache einfließen lässt.
Gute grundlegene Informationenquellen sind dies hier z. B.: Heise Security Giftspritze · SQL-Injection - Angriff und Abwehr von Daniel Bachfeld Wikipedia: SQL-Injection MfG Sascha Ahlers -------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
![]() |
| sd12 |
#3 Geschrieben am: Fr 21.04.2006, 21:44 (+00:01)
|
||
![]() AyomRank 9 Gruppe: Moderatoren Beiträge: 3581 Mitglied seit: 3.03.2004 |
Ich weiss zwar inzwischen wie es funktioniert... aber wie ich es verhindern kann weiss ich nicht... Hat niemand einen Codeschnipsel? -------------------- ************************
Treiber f[r das Kezboard ist [berfl[ssig. |
||
![]() |
| jAuer Jürgen Auer - freiberufl. Programmierer |
#4 Geschrieben am: Fr 21.04.2006, 22:40 (+00:55)
|
|
AyomRank 9 Gruppe: Experten Entwicklung Beiträge: 2412 Mitglied seit: 4.02.2006 |
Zum Lesen:
Datenbank-Architektur Zu Sql-Injektionen Punkt 6. Man sieht: Auch gespeicherte Prozeduren können - fehlerhaft verwendet - Sql-Injektionen ermöglichen. Und das ist befehlsunabhängig - jeder Sql-Befehl, der ohne Prüfung aus Nutzereingaben zusammengebaut wird, kann die letzte Aktion gewesen sein. PS: Dabei werkele ich gerade auf meinem MS-SqlServer dick herum - und lese nix in Foren. -------------------- Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.
server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung. Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert. |
![]() |
| Mar-T |
#5 Geschrieben am: Fr 21.04.2006, 22:58 (+00:18)
|
||
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 112 Mitglied seit: 13.12.2005 |
Ganz brauchbarer Artikel: SQL Injection verhindern |
||
![]() |
| skhype |
#6 Geschrieben am: Sa 22.04.2006, 08:29 (+09:31)
|
|
AyomRank 3 ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 31 Mitglied seit: 14.12.2004 |
Erstmal überprüfen ob sich der Wert einer Variable, die du für das Statement verwendest, plausibel ist.
Dann PDO (PHP5) mit Prepared Statements benutzen. |
![]() |
| Joel Enzian Media GmbH |
#7 Geschrieben am: Sa 22.04.2006, 09:07 (+00:37)
|
||
![]() AyomRank 7 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 1441 Mitglied seit: 17.06.2004 |
-------------------- EagleFind.com - Die visuelle Suchmaschine
Enzian Media bietet Entwicklung von Websites, Videos und Webcam-Streaming. Suxedoo- Werbekampagne im Wert von 5000.- jetzt Gewinnen! Nur für im Handelsregister eingetragene Frimen! |
||
![]() |
| Suppi |
#8 Geschrieben am: So 23.04.2006, 12:32 (+27:24)
|
||
|
AyomRank 4 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 124 Mitglied seit: 20.07.2004 |
Ich habs mit einer Funktion gmacht, die ich mal irgendwo gefunden habe:
Ich hoffe das ist sicher, denn so ganz sicher bin ich mir nicht -------------------- |
||
![]() |
| sd12 |
#9 Geschrieben am: So 23.04.2006, 15:36 (+03:04)
|
||||
![]() AyomRank 9 Gruppe: Moderatoren Beiträge: 3581 Mitglied seit: 3.03.2004 |
Genau so hab ich es versucht... Ich glaube einfach das ganze falsch zu verstehenen... Wenn $varname als Inhalt "'\" hat was wird dann in die DB gschrieben? Ich gehe davon aus, dass er "\'\\" in die DB schreiben soll... ...aber er schreibt "'\"... Ist vielleicht liegt da mein Denkfehler? -------------------- ************************
Treiber f[r das Kezboard ist [berfl[ssig. |
||||
![]() |
| NC |
#10 Geschrieben am: So 23.04.2006, 15:40 (+00:03)
|
||||||
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 280 Mitglied seit: 17.03.2006 |
Ja, dein denkfehler... \" muss ja nicht escaped werden: ist es ja schon. Und 2x escapen würde nichts bringen, oder? |
||||||
![]() |
| sd12 |
#11 Geschrieben am: So 23.04.2006, 15:49 (+00:09)
|
||
![]() AyomRank 9 Gruppe: Moderatoren Beiträge: 3581 Mitglied seit: 3.03.2004 |
Aber dasselbe passiert z.B. mit 'INSERT da müsste doch \'INSERT in die DB... -------------------- ************************
Treiber f[r das Kezboard ist [berfl[ssig. |
||
![]() |
| Sascha Ahlers |
#12 Geschrieben am: So 23.04.2006, 16:40 (+00:50)
|
![]() AyomRank 8 Gruppe: Experten Entwicklung Beiträge: 1699 Mitglied seit: 27.12.2004 |
Du musst auch schauen, ob die Magic Quotes [1] aktiv sind oder nicht (Standardeinstellung: aktiv), wenn diese aktiv sind wird automatisch ein addslashes [2] auf den übergebenen Variablen durchgeführt.
Wenn also Magic Quotes aktiv sind, musst du erst stripslashes ausführen und dann erst mysql_real_escape_string [3]. Die Funktion addslashes und mysql_real_escape_string sind nicht identisch, da mysql_real_escape_string einige Zeichen mehr escaped als addslashes. Letztendlich ist es aber bei SQL-Injection nicht unbedingt mit einer solchen Funktion alleine getan. [4] Hier kommt es auf das entsprechende Hintergrundwissen und die eigene Erfahrung an. Von enormen Vorteil ist es natürlich, wenn man entweder die Programmiersprache sehr gut kennt, oder zumindestens ein sehr gutes Nachschlagewerk kennt und richtig Programmieren gelernt hat (, damit meine ich, dass man die Fähigkeit für ein entsprechend logisches Denken besitzt bzw. entwickelt hat und ein grundlegenes Wissen über die Grundlagen der Programmierung hat - Kontrollstruktoren, Schleifen, Bit-Operationen usw). MfG Sascha Ahlers
-------------------- Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."
Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007 |
![]() |
| jAuer Jürgen Auer - freiberufl. Programmierer |
#13 Geschrieben am: So 23.04.2006, 17:16 (+00:36)
|
||
|
AyomRank 9 Gruppe: Experten Entwicklung Beiträge: 2412 Mitglied seit: 4.02.2006 |
Es ist völlig uninteressant, was in die Datenbank geschrieben wird. Entscheidend ist, daß die Befehlslogik (egal, ob Select oder Insert) nicht verändert und kein eigener Befehl angehängt wird. -------------------- Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.
server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung. Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert. |
||
![]() |
| Malte Landwehr |
#14 Geschrieben am: So 23.04.2006, 17:28 (+00:12)
|
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 201 Mitglied seit: 28.05.2005 |
Vielleicht würde dir auch der CrackerTracker von CBACK weiterhelfen?
Der verhindert unteranderem SQL-Injections. -------------------- |
![]() |
| jAuer Jürgen Auer - freiberufl. Programmierer |
#15 Geschrieben am: So 23.04.2006, 17:40 (+00:11)
|
||||
|
AyomRank 9 Gruppe: Experten Entwicklung Beiträge: 2412 Mitglied seit: 4.02.2006 |
@Malte Landwehr: Soll das ein Scherz sein? Was soll an diesem Code
eine Sql-Injektion verhindern? Das ist ein bloßes Filtern nach einigen typischen Begriffen. Abgesehen davon kann man Sql-Injektionen auch per POST-Daten einschleusen. -------------------- Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.
server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung. Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert. |
||||
![]() |
| Malte Landwehr |
#16 Geschrieben am: So 23.04.2006, 18:28 (+00:47)
|
||
|
AyomRank 5 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Gruppe: Member (aktiv) Beiträge: 201 Mitglied seit: 28.05.2005 |
Ich habe von Programmieren ungefähr soviel Ahnung wie eine Giraffe vom Autofahren. Aber in der Beschreibung von dem Programm steht halt "bringt das Schutzsystem vor SQL Injections". Und die phpBB-Security Programme des Autors sind recht weit vervreitet. Da habe ich in meinem jugendlichen Leichtsinn eben angenommen, dass auch drinn ist was drauf steht. -------------------- |
||
![]() |
| jAuer Jürgen Auer - freiberufl. Programmierer |
#17 Geschrieben am: So 23.04.2006, 18:43 (+00:15)
|
||||
|
AyomRank 9 Gruppe: Experten Entwicklung Beiträge: 2412 Mitglied seit: 4.02.2006 |
Ja, das hatte ich auch gelesen. Na ja, der Verfasser hat wohl in Marketing eine 1 und in Programmieren eine 6, bei mir ist das so in etwa umgekehrt.
Die meisten phpBB-Verwender dürften ziemlich wenig Ahnung haben, also glauben sie das alles eben und meinen, sich damit etwas gutes zu tun. Ich weiß schon, weshalb ich oben einen Link zu einem eigenen Artikel gepostet habe. Und bei einem Angebot wie dem meinigen, wo sich Nutzer über den Browser eigene Sql-Abfragen (einschließlich Unterabfragen und Verwendung von Textkonstanten - 'test') erstellen dürfen, darf ich natürlich nicht alle Sql-Schlüsselwörter verbieten. Richtig interessant wird das Problem der Injektionen erst, wenn Nutzer Unicode-Zeichen verwenden und dann etwas durchschlüpft - etwa ein 'Insert' mit einem türkischen İ (İ = 'Latin Capital Letter I with dot above'). -------------------- Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.
server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung. Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert. |
||||
![]() |
| sd12 |
#18 Geschrieben am: So 23.04.2006, 20:03 (+01:20)
|
||
![]() AyomRank 9 Gruppe: Moderatoren Beiträge: 3581 Mitglied seit: 3.03.2004 |
zum guten Glück geht es nicht um solch sensitive Daten, welche einen solchen Aufwand rechtfertigen würden... übrigens: magic_quotes_gpc Off Off Meine Frage: Fängt mein oben geposteter Schnipsel die wichtigsten Injektionen ab? -------------------- ************************
Treiber f[r das Kezboard ist [berfl[ssig. |
||
![]() |
| jAuer Jürgen Auer - freiberufl. Programmierer |
#19 Geschrieben am: So 23.04.2006, 20:47 (+00:43)
|
||||
|
AyomRank 9 Gruppe: Experten Entwicklung Beiträge: 2412 Mitglied seit: 4.02.2006 |
Bei Sql-Injektionen ist es wichtig, daß man das Prinzip versteht und seine eigene Anwendung dann auf alle Stellen abklopft, wo Benutzereingaben verarbeitet werden.
Das Argument ist strukturell falsch: Eine gehackte Anwendung läßt sich vielfach mißbrauchen, bsp. als Mailspamschleuder. Ein Server im Web, auf dem man anonym tun und lassen kann, was man will und für den offiziell jemand anderes verantwortlich ist ... ist doch wunderbar - da muß man sich nicht für irgendwelche Daten auf diesem Server interessieren. Und wenn jemand aus dem Ausland den Server knackt, benötigt er keinerlei Deutschkenntnis, um die Daten vielleicht lesen zu können.
Keine Ahnung, ich verwende kein PHP und weiß deshalb nicht, was die obige Funktion macht. Und Zahlen muß man ohnehin gesondert behandeln, auch da lassen sich Texte anfügen. -------------------- Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.
server-daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung. Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert. |
||||
![]() |
| sd12 |
#20 Geschrieben am: Di 25.04.2006, 07:48 (+35:00)
|
||||
![]() AyomRank 9 Gruppe: Moderatoren Beiträge: 3581 Mitglied seit: 3.03.2004 |
Ihr versteht mich falsch... Ich möchte euch ein Beispiel machen... Ich habe ein Warenhaus. Da ich gehört habe, dass viel geklaut wird, möchte ich einen Ladendetektiv anstellen. Ich bin aber keine Nationalbank. Klar wäre einen Applikation, welche so sicher ist wie jene der Banken schön, das wäre aber mit Schrotfinten auf Vögel geschossen. Ich möchte einfach die Script Kiddies Aussperren, genügt hierfür folgendes Script?
Sollte dann mal irgendwer es trozdem schaffen, meine App zu hacken und die DB zerstören, fahre ich einfach ein Restore der DB... -------------------- ************************
Treiber f[r das Kezboard ist [berfl[ssig. |
||||
![]() |
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
« PR in Verzeichnis einbauen | Programmierung Allgemein | Probleme bei Verbindung zum XAMPP mit Localhost »
Trackback-Url: http://www.ayom.com/track/t/11692
Seiten: (2) [1] 2 |
![]() ![]() ![]() |
| Themen Titel | Autor | Views | Antworten | Letzte Aktion |
| SQL-Injection - automatisierte Angriffe | jAuer | 1464 | 17 | Mo 9.06.2008, 19:51 |
Anzeige - [Hier werben / Mediadaten]


















