|
You last visited: Today at 19:48
Advertisement
Anti SQL Injection
Discussion on Anti SQL Injection within the Web Development forum part of the Coders Den category.
10/30/2013, 23:28
|
#1
|
elite*gold: 0
Join Date: Nov 2010
Posts: 255
Received Thanks: 176
|
Anti SQL Injection
Hallo,
mal ein kleiner Anti SQL Injection code.
PHP Code:
$array = array("'", "union", "select", "<script>", "alert", "order", "../", "/etc/passwd", "c99", "/etc/shadow", "substr");
foreach ($_REQUEST as $req) { foreach ($array as $arr) { if (preg_match("/".$arr."/i", $req) == true) { die("SQL Injection blocked!"); } } }
MfG
|
|
|
10/30/2013, 23:47
|
#2
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
Schwachsinn.
|
|
|
10/30/2013, 23:50
|
#3
|
elite*gold: 1329
Join Date: Jun 2009
Posts: 1,873
Received Thanks: 960
|
OK. Nein. Das ist der schlechteste Schutz, den ich je gesehen hab^^
- unperformant
- blockiert nur die gegebenen Zeichenketten
- blockiert Zeichenketten, die die gegebenen Zeichenketten enthalten
Ich schlage einfaches escapen vor. oder noch besser die Verwendung von Prepared Statements (siehe z.B. PDO)
|
|
|
10/30/2013, 23:54
|
#4
|
elite*gold: 0
Join Date: Oct 2009
Posts: 4,851
Received Thanks: 3,417
|
Kommt hier rein :
Zumal gibt es mehrere SQL-Injections als diese in deinem Array.
Benutze lieber das hier :
Quote:
Originally Posted by Che
Code:
array_walk($_GET, create_function('&$value', 'return $value=htmlspecialchars(mysql_escape_string($value));'));
array_walk($_POST, create_function('&$value', 'return $value=htmlspecialchars(mysql_escape_string($value));'));
Nettes Snippet um PHP Scripte allgemein deutlich sicherer zu machen. Im Grunde genommen nimmt man so (sofern geschickt im Haupt-Script eingebaut) ganz bequem jeglichen Nutzern sämtliche Möglichkeiten XSS- oder SQLi-Attacken durchzuführen.
|
~Grüße
|
|
|
10/31/2013, 00:28
|
#5
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Wenn wir schon dabei sind:
Ein PHP-Script nie absterben lassen^^(die() )
Wenn du abbrichst, dann mit exit oder return
|
|
|
10/31/2013, 01:18
|
#6
|
elite*gold: 2932
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
|
Quote:
Originally Posted by XxharCs
Wenn wir schon dabei sind:
Ein PHP-Script nie absterben lassen^^(die() )
Wenn du abbrichst, dann mit exit oder return
|
Wenn wir grad dabei sind:
Quote:
There's no difference - they are the same.
Quote:
PHP Manual for exit:
Note: This language construct is equivalent to die().
|
Quote:
PHP Manual for die:
This language construct is equivalent to exit().
|
|
|
|
|
10/31/2013, 11:46
|
#7
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Quote:
Originally Posted by tolio
Wenn wir grad dabei sind:
Quote:
There's no difference - they are the same.
Quote:
PHP Manual for exit:
Note: This language construct is equivalent to die().
|
Quote:
PHP Manual for die:
This language construct is equivalent to exit().
|
|

|
Jeder Professionelle PHP-Programmierer wird dir von die() abraten.
Bei einem die() ist das Exception, Warning, Error Handling einfach nur grauslich. (Außer man verwendet ein @ vor der ganzen Funktion, was widderum grauslich ist)
Mit einem die() kannst du nicht alle Errors loggen, auffagen usw. und sowas ist eine schöne Information für einen Angreifer wenn er das meiste mitlesen kann.
Quote:
|
Originally Posted by Aus mehreren PHP Programmierer - Blogs&Forums
- It's not a very nice way to present the user with an error message.
- Using for instance the mysql_error() call with it, as many people do, exposes information that should never get output in a production environment (see: PHP Security)
- You cannot catch the error in any way.
- You cannot log the error.
- You cannot control whether it should be output to the screen or not. It's okay to do that in a development environment, but certainly not in a production environment.
- It prevents you from doing any sort of cleanup. It just ends the script abruptly.
|
Bei einem exit() kannst du Errors loggen, mit einem Errorcode das script beenden und du gibst nicht so leicht Info an einen Angreifer.
Außerdem steht in meinem Post noch return.
In der Produktion sollte man return und exit bevorzugen als ein Script mit allem drum und dran absterben zu lassen(die)
Aber dies kann zu einer endlosen Diskussion eskalieren, da jeder hier eine andere Meinung haben wird.
Deswegen der Post von:
Quote:
Originally Posted by .Zeraki'
Kommt hier rein :
Zumal gibt es mehrere SQL-Injections als diese in deinem Array.
Benutze lieber das hier :
Zitat:
Zitat von Che
Code:
Quote:
|
array_walk($_GET, create_function('&$value', 'return $value=htmlspecialchars(mysql_escape_string($value ));')); array_walk($_POST, create_function('&$value', 'return $value=htmlspecialchars(mysql_escape_string($value ));'));
|
Nettes Snippet um PHP Scripte allgemein deutlich sicherer zu machen. Im Grunde genommen nimmt man so (sofern geschickt im Haupt-Script eingebaut) ganz bequem jeglichen Nutzern sämtliche Möglichkeiten XSS- oder SQLi-Attacken durchzuführen.
~Grüße
|
|
|
|
10/31/2013, 14:14
|
#8
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,907
Received Thanks: 25,408
|
Was ist daran nicht zu verstehen, dass exit und die Synonyme sind?
Btw. Das Snippet von Che ist auch nicht viel besser.
#closed
|
|
|
 |
Similar Threads
|
[HELP] Website anti DDOS, anti Sql Injection
04/13/2013 - Flyff Private Server - 10 Replies
what is the anti ddos and anti sql injection javascript?
thanks in advance :)
|
[Release] Anti-Cheat DLL - *Lite* (Anti Injection)
04/11/2013 - Metin2 PServer Guides & Strategies - 30 Replies
Heyho, ich habe mir überlegt hier eine Kleinigkeit als einstieg zu releasen!
Dann wollen wir mal schauen, was ich anzubieten habe:
- Eine anti Injection DLL!
Was könnt ihr damit machen?
Ganz einfach, das injecten von Hacks verhindern!
Lite? Gibt es auch eine andere Version?
Die gibt es in der tat, unter Umständen kommt die noch mal dazu.
|
Anti .dll Injection
01/27/2013 - General Coding - 31 Replies
Diese Video zeigt, dass es möglich ist, injizierte .dll ausfindig zu machen.
Anti .dll Injection - YouTube
|
Anti Injection On Register
03/15/2012 - SRO Private Server - 0 Replies
function anti_injection($sql) {
$sql = preg_replace(sql_regcase("/(from|select|inser t|delete|where|'|\"|drop table|show tables|#|\*|--|\\\\)/"),"",$sql);
$sql = trim($sql);
$sql = strip_tags($sql);
$sql = addslashes($sql);
return $sql;
}
$username=anti_injection($_POST);
$password=md5($_POST);
$password2=anti_injection($_POST);
|
All times are GMT +1. The time now is 19:49.
|
|