PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Entwicklung und Softwaredesign (http://www.selfphp.de/forum/forumdisplay.php?f=14)
-   -   Sessions und HTTP Auth (http://www.selfphp.de/forum/showthread.php?t=23718)

Serathil 03.11.2010 08:32:39

Sessions und HTTP Auth
 
Guten Morgen ,
ich habe eine Homepage auf der sich Benutzer einloggen können um in einen internen Bereich zu gelangen.
Das funktioniert mit Sessions ganz gut.
Das Problem ist nun, dass ich Dateien habe, die nur von bestimmten internen Bneutzern geladen werden dürfen, bzw Ordner in die auf keinen Fall nicht-eingeloggte Leute hineindürfen.
Damit auch Google nicht durch die Ordner läuft habe ich eine .htaccess angelegt, welche die Nutzerdaten aus einer SQL-DB ausliest und denn Nutzer dann zulässt oder nicht.

Mein Problem ist nun, dass die User genervt sind, dass sie sich beim HTAccess noch einmal anmelden müssen.
Nun möchte ich aber auch nicht das gesamte Konzept über den Haufen werfen sondern die Sessions behalten.
Eine Zuweisung der SERVER-Variablen geht ja leider auch nicht und wie ich finde ist nur das htaccess unschön zum einloggen.
Hat jemand von euch da eine Idee?

Lg

cortex 03.11.2010 09:00:56

AW: Sessions und HTTP Auth
 
Zitat:

Zitat von Serathil (Beitrag 138818)
Hat jemand von euch da eine Idee?

nutze php zur authentifizierung; http-auth ist für komplexere umgebungen - wie du selbst bemerkst - gänzlich ungeeignet. nutze dazu entsprechende module eines php-frameworks, suche nach skripten / tutorials im netz und / oder schreib das ganze selbst zusammen.

cx

R4Zz0R 03.11.2010 10:12:19

AW: Sessions und HTTP Auth
 
Eine empfehlung hätte ich für dich.

-> Das script is frei verfügbar und von einem kollegen von mir geschrieben mit dem ich zusammen bei dem projet arbeite.

http://webdesign.sarkkan.de/moonweb/...nigAufwand.htm

Ziemlich sicher auserdem leicht zu integrieren finde ich.

LG
R4Zz0R

cortex 03.11.2010 11:19:40

AW: Sessions und HTTP Auth
 
Zitat:

Zitat von R4Zz0R (Beitrag 138822)
Ziemlich sicher [...] finde ich.

wie kommst du zu dieser einschätzung? ist dein kollege der meinung? hast du selbst ausreichend erfahrung, das zu beurteilen?

anmerkungen zum skript:

Zitat:

Zusätzlich wenden wir noch htmlentities() und trim() [auf] Benutzernamen sowie Passwort an, um gefährliche Zeichen zu maskieren und unnötige Leerzeichen zu entfernen:
das ist unsinn.

1. htmlentities( ) dient zur maskierung besonderer zeichen bei der ausgabe von daten in html. darüber hinaus würde man nicht die originären daten in der db speichern, sondern eine (willkürliche / spezifische) maskierung.

2. um eingabedaten in richtung db zu maskieren, wird mysql_real_escape_string benutzt.

ich kann R4Zz0R's empfehlung leider nicht teilen; das ganze ist nicht ausgereift.

cx

CPCoder 03.11.2010 13:40:54

AW: Sessions und HTTP Auth
 
Ich kann der Empfehlung ebenfalls keine Zustimmung erteilen.

Schon alleine der Loginvorgang wird durchgeführt ohne die übergebenen POST-Parameter zu maskieren und direkt in das SQL-Query einzubinden:

Zitat:

$user = $_POST['loginName'];
$pass = $_POST['loginPass'];

$sql = "SELECT id FROM accounts WHERE
username = '". $user ."' AND
password = '". $pass ."' LIMIT 1;";
Stichwort: SQL-Injection

cortex 03.11.2010 14:22:37

AW: Sessions und HTTP Auth
 
Zitat:

Zitat von CPCoder (Beitrag 138834)
Schon alleine der Loginvorgang wird durchgeführt ohne die übergebenen POST-Parameter zu maskieren [...]

naja... dazu haben die autoren auch angemerkt:

Zitat:

Dieser Login kann ausgetrickst werden
cx

Ckaos 03.11.2010 22:39:51

AW: Sessions und HTTP Auth
 
Hi

Zitat:

Zitat von cortex (Beitrag 138826)
2. um eingabedaten in richtung db zu maskieren, wird mysql_real_escape_string benutzt.

ich kann R4Zz0R's empfehlung leider nicht teilen; das ganze ist nicht ausgereift.

cx

Sehe ich genauso.

Und bitte nicht mehr auf magic_quotes_gpc setzen das is ab 5.3 DEPRECATED.

Daten die nicht in Richtung DB gehen kann man sich easy ne
Funktion schreiben die alle POST, GET usw Daten von nicht
gewünschten befreit und gefährliches maskiert.

Ich persönlich maskiere durch eine solche funktion alles bevor
es meine scripte betritt egal welche ziele sie haben!

mfg

CKaos

R4Zz0R 03.11.2010 23:18:03

AW: Sessions und HTTP Auth
 
Zu dem script muss ich anmerken das da vor einiger zeit noch mehr zu dem beitrag stand..
Wurde wohl überarbeitet sorry für den ausrutscher ...

O.T
@ Ckaos:
meinst du etwa sowas wie (pseudocode *sollte aber gehen ;) )

PHP-Code:

<?php
$geta 
array_merge($_GET);
foreach ( 
$geta as $varx => $val )  {
    
$geta[$varx] = preg_replace('/[^a-z0-9 \\/?=&]/Usi','',$val);
}
?>

Was natürlich jetzt meine variante wäre sowas zu lösen. (und was auch auf post anwendbar wäre)

Ckaos 04.11.2010 01:59:33

AW: Sessions und HTTP Auth
 
Hi

so oder ähnlich ;)
PHP-Code:

$outlow=array(";",":","<",">","%","$");
foreach(
$_GET as $key=>$val){
     
$_GET[$key] = str_replace($outlow,"",$val);
}
foreach(
$_POST as $key=>$val){
     
$_POST[$key] = str_replace($outlow,"",$val);


Jedenfalls fing ich so mal an....dann paranoider später / heute
habe ich ne Klasse die je Seite nur vorher per Formularklasse
oder Tempklasse zugelassene/registrierte/Typ bestimmte Daten
prüft und durchlässt andere ignoriert und mir nur zur
Prüfung ablegt. So lassen sich "versuche" relativ schnell
entdecken und im Keim ersticken.

mfg

CKaos

R4Zz0R 04.11.2010 13:54:57

AW: Sessions und HTTP Auth
 
Ähhm ... du entfernst die zeichen einfach ... dh. du machst das selbe wie ich mir str_replace
wobei eine regex warscheinlich performanter ist ...

bei post ist es auserdem weniger sinnvoll wenn du alles filterst und gegen nichts ersetzt also in dem fall es aus dem string löschst da der benutzer ja sicher auch gerne zeichen eingeben würde um seinen text zu formatieren oder code auf der seite zu präsentieren ...

da würde ich es dan eher mit mysql_real_escape_string maskieren ( dafür hab ich mir mal ne gute funktion gebastelt :D )

PHP-Code:

<?php
function cleanQuery($array) {
  foreach( 
$array as $varx => $val )  {
    
$array[$varx] = mysql_real_escape_string($val);
  }
  return 
$array;
}
?>

so habe ich immer ein eigenstädiges array was nur für sql querys bereitsteht, und das laut meiner ausgabe ( & sql inject me :) ) auch recht sicher ist.


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:41:35 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.