|
You last visited: Today at 19:33
Advertisement
SQL Inject verhindern
Discussion on SQL Inject verhindern within the Web Development forum part of the Coders Den category.
01/14/2014, 14:19
|
#1
|
elite*gold: 33
Join Date: Jan 2011
Posts: 2,693
Received Thanks: 456
|
SQL Inject verhindern
Hallo,
in den letzten 2 Tagen wurde meine Datenbank in MSSQL 2x gelöscht durch eine Injection von SQLi. Habe mir viele TuT durchgelesen auf Google und verstehe da nur Bahnhof... Wollte fragen ob mir evtl. einer helfen könnte mich davor zu schützen. Da ich mich nicht wirklich sonderlich gut mit MSSQL auskenne suche ich hier Hilfe.
Gebe auch mein restliches e*G, ist zwar nich viel kann aber leider grade nicht mehr bieten...
|
|
|
01/14/2014, 14:56
|
#2
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Mein Tipp: Schau dir mal  an.
Damit kannst du böse Sachen ausfiltern lassen, wenn du den richtigen Filter wählst.
Oder du schaust dir  an.
Mit den Seiten, die ich hier gepostet habe, sollte es kein Problem sein, das auf deinen Script anzuwenden.
|
|
|
01/14/2014, 21:08
|
#3
|
elite*gold: 18
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
|
Alle Strings als Hex Wert übergeben.
Wenn der User ";shutdown;--" eingibt, wird der SQL Server herrunter gefahren.
Sollte jetzt dieser aber als Hex Wert, sprich "0x3b73687574646f776e3b2d2d" übergeben werden, wird dieser von SQL als String angenommen und nicht mehr als Befehl.
Beispiel:
Code:
USE [MY_DATABASE]
UPDATE [MY_TABLE] SET [COLUMN] = 0x3b73687574646f776e3b2d2d WHERE [ID] = 0
Nun würde in der Spalte ";shutdown;--" auch als Text stehen.
Falls du für das ganze eine Klasse haben willst siehe hier:
|
|
|
01/14/2014, 22:56
|
#4
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
Quote:
Originally Posted by Sedrika
Alle Strings als Hex Wert übergeben.
|
Joa, und nun willst du irgendwas in der DB ändern (passiert bei eigenen Entwicklungen doch recht häufig) und musst dich mit HEX rumschlagen?
|
|
|
01/14/2014, 23:12
|
#5
|
elite*gold: 18
Join Date: Sep 2009
Posts: 20,174
Received Thanks: 14,475
|
Wieso soll man sich mit Hex rumschlagen?
Das ist einfacher als du denkst.
Über PHP einfach mit
Code:
"0x".bin2hex( $string )
und über SQL bsp. in Prozeduren via
Code:
-- Max Username length 16 chars
DECLARE @hex_user VARBINARY(32) = CAST( @user AS VARBINARY(32) )
Ich weiß nicht wo du da ein problem siehst. Wenn ich dadurch jeglichen injection kram aushebeln kann, ist es vollig akzeptabel.
In den Link oben den ich mit dazu gepackt habe ist eine SQL Klasse von mir welche schön alles via PHP absichert, dabei einfach mal auf die Escape funktion schauen. Eine einzige Zeile verhindert jeglische injections.
|
|
|
01/16/2014, 08:07
|
#6
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by Sedrika
Alle Strings als Hex Wert übergeben.
Wenn der User ";shutdown;--" eingibt, wird der SQL Server herrunter gefahren.
Sollte jetzt dieser aber als Hex Wert, sprich "0x3b73687574646f776e3b2d2d" übergeben werden, wird dieser von SQL als String angenommen und nicht mehr als Befehl.
Beispiel:
Code:
USE [MY_DATABASE]
UPDATE [MY_TABLE] SET [COLUMN] = 0x3b73687574646f776e3b2d2d WHERE [ID] = 0
Nun würde in der Spalte ";shutdown;--" auch als Text stehen.
Falls du für das ganze eine Klasse haben willst siehe hier: 
|
Unsinn. One4All Lösungen (bis auf Prepared Statements) gibt es nicht.
Alles kurz und klein escapen ist selten sinnvoll. Stattdessen sollte man den Input kontextgerecht validieren.
Und ich persönlich kann hex nicht im Kopf zu ascii umrechnen, weshalb mir ein spontaner Blick in die db durch so eine "Lösung" deutlich erschwert würde.
Und vergessen wir mal nicht die unnötige ~Verdopplung des Speicherbedarfs.
Quote:
Originally Posted by Sedrika
Ich weiß nicht wo du da ein problem siehst. Wenn ich dadurch jeglichen injection kram aushebeln kann, ist es vollig akzeptabel.
In den Link oben den ich mit dazu gepackt habe ist eine SQL Klasse von mir welche schön alles via PHP absichert, dabei einfach mal auf die Escape funktion schauen. Eine einzige Zeile verhindert jeglische injections.
|
Ebenfalls Unsinn.
|
|
|
01/16/2014, 10:12
|
#7
|
elite*gold: 1000
Join Date: Mar 2009
Posts: 1,408
Received Thanks: 1,006
|
Also ich kann das hier zur Übergabe Validierung nur empfehlen:
oder man schreibt sich ne Function:
PHP Code:
public function checkForbidden($wert) { $checkit = preg_match("/^[^!\"\/?*':<>[:space:]]+$/",$wert); if($checkit) return true; else return false; }
|
|
|
Similar Threads
|
Open Source Injector - Auto/Manual Inject, Verify Inject, Saves Settings
01/28/2013 - Combat Arms Hacks, Bots, Cheats & Exploits - 5 Replies
Open Source Injector - Auto/Manual Inject, Verify Inject, Saves Settings
Features:
-Auto Inject
-Customizable Delay
-Manual Inject
-Verify Inject
|
IP Bann verhindern
04/10/2012 - General Gaming Discussion - 7 Replies
Hey leute bräuchte schnell mal paar infos :D
was muss ich alles tun damit das meine feste ip nicht gebannt werden kann.
Reicht es wenn ich über einen proxy spiele? und welches proxy programm?
und ein besonderer proxy? oder muss ich noch mehr tun?
Bräuchte einfach mal paar infos dazu ;)
Danke schon mal für die antworten :)
|
Shutdown 100% verhindern?
07/07/2011 - Metin2 Private Server - 8 Replies
hallo , wie verhindere ich 100% ein shutdown ?
Mein server hat /shutdown aus der gamefile entnommen , also der code ist dies nicht möglich.
Ebendso ist das api toll gefixxt , was kann ich noch tun?
|
All times are GMT +1. The time now is 19:35.
|
|