|
 |
|
| Autor |
Nachricht |
eforium Bekannter [Mod]


Anmeldung: 20.01.06 Beiträge: 1364 Wohnort: Irgendwo i ...
|
|
| Nach oben |
|
 |
800XE Bekannter [Mod]


Anmeldung: 24.10.04 Beiträge: 1499 Wohnort: Speyer
|
Verfasst am: 12.06.2007, 18:07 Titel: Re: Allgemeine Sicherheit |
|
|
| maject hat folgendes geschrieben: | | Code: | | where md5(benutzername) = '".md5($_POST['benutzer'])."' and md5(passwort) = '".md5($_POST['passwort'])."' |
|
diesen Code fand ich Performenctechnisch garnicht gut ....
... habe eben die Posts darauf "abgetrennt"
www.webmasterwelt.net/artikel,8977,-sql-md5-performance.html _________________
Seien wir realistisch, versuchen wir das Unmögliche!
CMS800 :::::::::: Andy 800XE Zmuda :::::::::
ich bin nicht unhöflich, ich bin binär
|
|
| Nach oben |
|
 |
jonatan_männchen User [User]

Anmeldung: 12.10.08 Beiträge: 10 Wohnort: Winterthur ...
|
Verfasst am: 12.10.2008, 13:11 Titel: Filter |
|
|
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;
}
}
}
?>
|
Das wird so eingesezt:
| 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;
}
?>
|
Ich hoffe dass hilft
Jonatan
|
|
| Nach oben |
|
 |
hlag User [User]


Anmeldung: 29.10.08 Beiträge: 10 Wohnort: Bonn
|
Verfasst am: 28.11.2008, 18:30 Titel: |
|
|
Hi,
ich machs so:
ganz normale Query:
| Code: |
SELECT * FROM tab WHERE user = '$_POST['user']' AND pass = 'md5($_POST['pass'])'
|
Bis hierhin greift die sql-Injektion.
Daten abholen und in $value speichern.
| Code: |
if($_POST['user'] == $value ['user'] AND md5($_POST['pass']) == $value ['pass'] )
{
// user logged in
.....
} |
Die Bedingung haut nur und nur hin, wenn das, was gepostet wurde auch in der Datenbank war.
hlag _________________ Klaus Blömeke
avaris | godot.de
SiteAlert - Websiteüberwachung
|
|
| Nach oben |
|
 |
|
|
 |
|
Alle Zeiten sind GMT + 1 Stunde Gehe zu Seite Zurück 1, 2
|
| Seite 2 von 2 |
|  |