Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Web Development
You last visited: Today at 19:33

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



SQL Inject verhindern

Discussion on SQL Inject verhindern within the Web Development forum part of the Coders Den category.

Reply
 
Old   #1

 
Dr.Dr.SheldonLeeCooper's Avatar
 
elite*gold: 33
The Black Market: 100/0/2
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...
Dr.Dr.SheldonLeeCooper is offline  
Old 01/14/2014, 14:56   #2

 
マルコ's Avatar
 
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.
マルコ is offline  
Old 01/14/2014, 21:08   #3



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
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:
Sedrika is offline  
Old 01/14/2014, 22:56   #4

 
マルコ's Avatar
 
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
Quote:
Originally Posted by Sedrika View Post
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?
マルコ is offline  
Old 01/14/2014, 23:12   #5



 
Sedrika's Avatar
 
elite*gold: 18
The Black Market: 103/0/0
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.
Sedrika is offline  
Old 01/16/2014, 08:07   #6


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by Sedrika View Post
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 View Post
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.
MrSm!th is offline  
Old 01/16/2014, 10:12   #7
 
Coniesan's Avatar
 
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;
    } 
Coniesan is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.