|
#11
|
||||
|
||||
|
Auch wichtig ist bei includes darauf zu achten, dass man jeweilige Punkte oder Slashs löscht:
Code:
ulr.de/test.php?f=index Code:
<?php $f = $_REQUEST['f'] . 'php'; include($f); ?> Code:
<?php
$f = ereg_replace('..', '', $_REQUEST['f'])
$f = ereg_replace('/', '', $f);
$f .= '.php';
include(addslashes($f);
?>
Nochmal besser wäre es, die Datei mit einer switch() zu überprüfen... ISt aber blöd, weil dann immer mehrere Files geupdatet werden müssen. Am besten ist es aber, ganz auf so etwas zu verzichten. |
|
#12
|
||||
|
||||
|
Zitat:
gpl setzt halt den zugang zum code voraus - und aus dem reinen quelltext werden wohl eh bloß die profis schlau. ne injection basiert IMMER auf fehlern beim coden - also eigentlich mehr ein anfänger problem als eines der profis - würde ich mal grob sagen. auch ein grund warum man generell von seiten im ausland die download finger lassen sollte - denn die "einrecher" installiert man sich meist brav selber auf dem server - newbie prob - die sich halt jeden code und jedes plugin - wozu auch immer auf dem server installieren. http://www.heise.de/security/ http://www.all-about-security.de/art...12f0a00ab.html sowie noch einige weitere ! PHP-Nuke nun ... schaun wir mal.... http://www.google.de/search?hl=de&rl...nG=Suche&meta= Ergebnisse 1 - 10 von ungefähr 263.000 für PHP-Nuke sql injection. (0,09 Sekunden) e107 Ergebnisse 1 - 10 von ungefähr 59.400 für e107 sql injection. (0,08 Sekunden) typo3 Ergebnisse 1 - 10 von ungefähr 140.000 für typo3 sql injection. (0,08 Sekunden) joomla Ergebnisse 1 - 10 von ungefähr 442.000 für joomla sql injection. (0,19 Sekunden) Wobei man mal auch klar sagen muss - war nur ein einziger suchbegriff - in dem zusammenhang (eigenlob) beim e107 cms liegt der letzte bekannte security bug in 2004 ! danach ham wir endlich ruhe gehabt weil die plugs die in die releases einziehen - mehr als ausgiebig getestet werden. jeder anfänger sollte sich auch mal ernsthaft fragen - wenn mir auf der straße jemand was in die hand drückt - ob man das ungesehen in den mund steckt ? aber warum installieren dann leute sachen - von denen sie nicht mal die ersten 2 zeilen code verstehen ? genau da liegt das problem ! |
|
#13
|
||||
|
||||
|
find ich lustig das du da einen 3 Jahre alten Post Quotest
Zitat:
dann bewerb dich bei M$ ich glaube, dort wärst du am richtigen Platz Ich hoffe mal, du willst nicht sagen, weil Google über e107 weniger findet, das es diesbezüglich besser als die Anderen ist? was weniger bekannt darüber weniger geschrieben deshalb weniger gefunden wie wäre wohl die Bilanz der obigen Suche wenn sich nächste Woche alle openSourcler e107 anschauen und ihre Erkentnisse in ihren Blogs verblogen? ich hoffe du bist mir jetzt nicht alzu böse, und möchtest mich töten, weil ich diesen Post gepostet habe .... .... hast du vielleicht mal einen Link für mich, wo steht warum weshalb das e107 e107 heist ... wie kamms zum Namen was soll er bedeuten .... ich denke immer an Lebensmittel(farben)Zusätze wenn ich dieses e107 lese Zitat:
www.CMS800.de oder wird es irgendwann mal sein :lol: |
|
#14
|
||||
|
||||
|
Allgemein gesagt ist das Thema Sicherheit ein weites Feld. Jedoch sollte man sich als Softwareprogrammierer damit ausgiebig beschäftigen. Viele der Threads sprachen schon an, dass SQL-Injections über die Paramter POST und GET kommen. Wer diese vollständig abhorcht, ist im Vergleich zu semi-professioneller Software auf der guten Seite. Man sollte aber nicht vergessen, dass es auch eine SQL-Injection über die globale Variable $_SERVER erfolgen kann. Häufig nutzen zum Beispiel Statistiken die Variabale $_SERVER['HTTP_USER_AGENT'], die wie alle anderen Parameter/Variablen auch manipuliert sein kann. In diesem Falle durch einen vorgeschalteten Proxy oder mittels eines Browser-Plugins.
Auch zu der Passwort-Abfrage möchte ich mich einschalten: Die nachfolgende MySql-Abfrage ist unsicher: Code:
$query = " select `id` from `benutzer` where
`name`='".$_POST['name']."' and
`passwort`='".$_POST['passwort']."' Limit 0,1";
Deshalb verwende ich seit Jahren, so oft wie es nur geht, die nachfolgende SQL-Abfrage. Die Performance, die merklich nur bei großen Portalen herabfällt nehme ich dabei in Kauf: Code:
where md5(benutzername) = '".md5($_POST['benutzer'])."' and md5(passwort) = '".md5($_POST['passwort'])."' Zum Schluss möchte ich noch darüber philosophieren ! Die Zeit, die ich für die Sicherheit meiner PHP-Scripte aufwende scheint im ersten Moment sehr absurd. Man bekommt auch sonst Lohn oder Dank dafür. Kunden wollen das ihr Script das tut was Sie möchten und selten über den Tellerrand hinaus - "das Kostet ja viel mehr...". Ich versuche deshalb so viele Statistiken wie möglich darüber zu haben, wie viele Angriffe gemacht wurden und natürlich ob diese Erfolgreich abgewehrt wurden. Bei mir kommt dann am Ende ein "Belohnungsgefühl" heraus - das sollte bei Hobby (bisher bei mir leider noch so...) -Programmierern nie fehlen.
|
|
#15
|
||||
|
||||
|
Um XSS(Cross-Scripting) Lücken gut abzusichern gibt es folgende Tags:
strip_tags($string) >Entfernt PHP, HTML Tags htmlentities($string) Wandelt alle Symbole, wie z.B. <> in die in HTML verwendeten Entities um. Baut diese Abfragen ein und euer Script ist auch gegen XSS-Sicherheitslücken gefeit. |
|
#16
|
||||
|
||||
|
Danke für den Aufschlussreichen Tipp, hilft mir
|
|
#17
|
||||
|
||||
|
Zitat:
... habe eben die Posts darauf "abgetrennt" http://www.webmasterwelt.net/artikel...rformance.html |
|
#18
|
||||
|
||||
|
Ich würde bei allen SQL-Abfragen die Variabeln in ein mysql_real_escape_string() oder ein intval() setzen.
Dazu würde ich eine Filterklasse machen(mit Whitelist): (Mein Grundsatz: Alle Userdaten Filtern, ich habe darum verschiedene Filter gesendet (email, passwort, username, htmltags(auch in einem Array), länge) Code:
<?php
class Filter{
const EMAIL_PATTERN = '%^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$%';
const PASSWORD_PATTERN = '%^[a-zA-Z0-9\_\$\+\*\ç\%\&\/\(\)\?\§]+$%';
const USERNAME_PATTERN = '%^[a-zA-Z0-9\-_]+$%';
public static function htmltags_array($content){
$stripped = array();
foreach($content as $key=>$value) {
$stripped[$key] = strip_tags($value);
} return $stripped;
}
public static function htmltags($content){
if (strip_tags($content) == $content){
return true;
} return false;
}
public static function username($content, $length=0){
$length_check = true;
if(!empty($length)) {
$length_check = self::length($content, $length);
}
if(preg_match(self::USERNAME_PATTERN, $content) && $length_check){
return true;
}else {
return false;
}
}
public static function password($content){
if (preg_match(self::PASSWORD_PATTERN, $content)){
if (self::length($content, 6) && !is_numeric($content)) {
return true;
} else {
return false;
}
}else {
return false;
}
}
public static function email($content){
if(preg_match(self::EMAIL_PATTERN, $content)) {
return true;
} return false;
}
public static function length($content, $lenght){
if (strlen($content) >= $lenght){
return true;
} else {
return false;
}
}
}
?>
Code:
<?php
require_once('Pfad/Filter.class.php');
if (Filter:username('##username##, '##mindestlänge(optional)##') && Filter:password('##username##)){
mysql_connect('##host##', ##username##', '##password##');
mysql_select_db('##db##');
$sql="SELECT COUNT(*) FROM ##db## WHERE password=MD5('".mysql_real_escape_string('##password##').'") AND username='".mysql_real_escape_string('##username##')."'";
mysql_query($sql);
mysql_fetch_assoc();
} else {
return false;
}
?>
Jonatan |
|
#19
|
||||
|
||||
|
Hi,
ich machs so: ganz normale Query: Code:
SELECT * FROM tab WHERE user = '$_POST['user']' AND pass = 'md5($_POST['pass'])' Daten abholen und in $value speichern. Code:
if($_POST['user'] == $value ['user'] AND md5($_POST['pass']) == $value ['pass'] )
{
// user logged in
.....
}
8-) hlag |
|
#20
|
||||
|
||||
|
Bump! thx !
As soon as you wake up, you're fired Our co-worker went missing for a few hours, and we tore up the place looking for him. The boss finally found him fast asleep. Rather than wake him, he quietly placed a note on the man's chest. "As long as you're asleep," it read, "you have a job. But as soon as you wake up, you're fired." --------------dvd copy,--------dvd ripper, ------------------dvd to ipod,----------------dvd ripper,-------------------dvd software,-----------
__________________
dvd copy |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|