SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Entwicklung und Softwaredesign

PHP Entwicklung und Softwaredesign Hier können strukturelle (Programmier-) Konzepte diskutiert und Projekte vorgestellt werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 30.03.2011, 14:25:59
R4Zz0R R4Zz0R ist offline
Junior Member
 
Registriert seit: Sep 2009
Ort: Wetzlar/Kassel
Alter: 28
Beiträge: 201
R4Zz0R befindet sich auf einem aufstrebenden Ast
Variablensicherheit

Hallo liebe Forumsgemeinde.

Ich habe heute überlegt wie ich das auswerten von formularen einfacher gestalten kann und es nicht immer nötig ist die variablen selbst im code zu deklarieren.

Also kam ich auf die idee aus dem assoziativen postarray gleich die variable zu übernehmen.

Also als beispiel:
Formular mit 2 feldern deren namen user und passwort sind.

Beim login wird nun nach den variablen user und passwort verlangt, und ich habe diese vorher immer so Deklariert:
PHP-Code:
$user $_POST['user'];
$passwort $_POST['passwort']; 
Was ja auch der normale weg dazu ist.
Jetzt dachte ich mir "Das muss doch auch gehen das php mir diese variable deklariert"

Dazu habe ich dan eine einfache schleife geschrieben die auch super funktioniert.

PHP-Code:
$usedvar array_keys($_POST);
    foreach(
$usedvar as $out) {
      $
$out $_POST[$out];
    } 
Nun frage ich mich nur wie es auf diesem weg mit der sicherheit aussieht und welche angriffe möglich sind und worauf ich achten muss um diese zu verhindern.
Ein weg der mir einfallen würde wäre zb. ein selbstgemachtes formular um die variablen zu manipulieren.
(ich weiß nur nicht genau wie viel auf diesem weg möglich ist. Also zu verändern, anzuhängen oder gar funktonen zu nutzen.)
Vielleicht könnt ihr mir da etwas zu sagen.
Danke schonmal im vorraus.

LG
R4Zz0R
__________________
Wachsen kann man entweder:

Körperlich -> Man wird größer.
^ Ist so von der Evolution gewollt.

Charakter -> Man wird Geduldiger.
^ Man wächst mit der aufgabe

Kopf -> Man wird Klüger.
^ Wenn die aufgabe probleme macht & man trotzdem deine lösung findet.
Mit Zitat antworten
  #2  
Alt 31.03.2011, 10:43:03
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Variablensicherheit

1.
Zitat:
PHP-Code:
$user $_POST['user']; 
$passwort $_POST['passwort']; 
Was ja auch der normale weg dazu ist.
Sagt wer?
Ich ganz sicher nicht!
Sowas wirst du niemals irgendwo bei mir finden.
Also ist das nicht normal, oder ich bin nicht normal.

2.
Da haben die PHP Entwickler das Register_Globals nahezu wieder abgeschafft und du tappst freiwillig in die Falle,

Zitat:
PHP-Code:
$usedvar array_keys($_POST); 
    foreach(
$usedvar as $out) { 
      $
$out $_POST[$out]; 
    } 
Völlig Sinn frei!
Und variable Variablen sind sowieso böse!

Schon mal extract() im handbuch gefunden?
Oder import_request_variables()?
Aber auch davon möchte ich dir abraten!
Mehrfach!
Mit Zitat antworten
  #3  
Alt 04.04.2011, 17:25:56
R4Zz0R R4Zz0R ist offline
Junior Member
 
Registriert seit: Sep 2009
Ort: Wetzlar/Kassel
Alter: 28
Beiträge: 201
R4Zz0R befindet sich auf einem aufstrebenden Ast
AW: Variablensicherheit

Hm ... jo das es das selbe ist wie register globals weiß ich ja ..
Aber wenn du variablen nicht deklarierst wie machst du das den dan ?...

Ich hab suche halt noch nach einem weg wie ich variablen nicht immer selbst deklarieren muss und das war halt neben register globals einzuschalten der einzige weg wie ich eventuell noch arbeiten könnte und es durch kontrollstrukturen (vielleicht) sicher genug machen könnte ...
__________________
Wachsen kann man entweder:

Körperlich -> Man wird größer.
^ Ist so von der Evolution gewollt.

Charakter -> Man wird Geduldiger.
^ Man wächst mit der aufgabe

Kopf -> Man wird Klüger.
^ Wenn die aufgabe probleme macht & man trotzdem deine lösung findet.
Mit Zitat antworten
  #4  
Alt 04.04.2011, 17:51:56
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Beiträge: 2.269
DokuLeseHemmung befindet sich auf einem aufstrebenden Ast
AW: Variablensicherheit

Wie ich das mache?

1. Kompletter Verzicht auf selbst definierten globalen Variablen, Konstanten, Funktionen usw.
2. Konsequentes halten an das Zend/Pear Benennungsschema für Klassen und Dateien.

Mein FrontControler macht eine erste Analyse des Requestes und erzeugt z.B. ein HTTPRequest Objekt und delegiert die weitere Bearbeitung an einen passenden Controler
Mit Zitat antworten
  #5  
Alt 05.05.2011, 12:50:26
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
Ckaos befindet sich auf einem aufstrebenden Ast
AW: Variablensicherheit

Hi

Zitat:
nicht immer selbst deklarieren muss
Schreibfaulheit vs Sicherheit 1:0

Das problem bei deinem Weg ist das du nicht weißt wer dir was für Daten schickt. Bsp.
Du hast eine Variable $cart definiert die durch einen so nicht kontrollierbaren
Weg überschrieben wird, weil ein böser dir per POST cart überträgt.
Geschweige denn das dein Code wiederverwendbar ist. Klar "wer schreibt bleibt"
aber musst du ein z.B. Regformular immer und immer wieder schreiben?
Ich jedenfalls nicht, ich geb Felder und Regeln an den rest macht eine Form Klasse.

Wie so oft schon erwähnt, schreib dir ne Form Klasse dafür!

mfg

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #6  
Alt 06.05.2011, 20:35:01
R4Zz0R R4Zz0R ist offline
Junior Member
 
Registriert seit: Sep 2009
Ort: Wetzlar/Kassel
Alter: 28
Beiträge: 201
R4Zz0R befindet sich auf einem aufstrebenden Ast
AW: Variablensicherheit

Bin dabei ...
Das ganze war aber nicht nur für formulare gedacht als für einen "on the fly" (lambda) funktionsaufruf... (threads dazu: ->Anfangsthread
Weiterführung)

Gerade diese funktionen benötigen diese variablen ob sie nun von formularen kommen oder per url übergeben werden ...

Dabei kommt es weniger darauf an das ich nicht über call_user_funct_array arbeiten wöllte eher darauf das ich bei der sortierung fehler machen könnte und daher daten falsch verarbeitet werden ...

^^ da suche ich grob gesagt eine lösung für.

LG
R4Zz0R
__________________
Wachsen kann man entweder:

Körperlich -> Man wird größer.
^ Ist so von der Evolution gewollt.

Charakter -> Man wird Geduldiger.
^ Man wächst mit der aufgabe

Kopf -> Man wird Klüger.
^ Wenn die aufgabe probleme macht & man trotzdem deine lösung findet.
Mit Zitat antworten
  #7  
Alt 07.05.2011, 01:15:17
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
Ckaos befindet sich auf einem aufstrebenden Ast
AW: Variablensicherheit

Hi

Zitat:
Gerade diese funktionen benötigen diese variablen ob sie nun von formularen kommen oder per url übergeben werden
Derzeit sind ARRAY's "schick" und nicht einzelne variablen. Also ein User array
kannst du so an eine Formular Klasse geben die daraus die Formularprüfung generiert,
sowie es an eine UserControl Klasse übergeben die es in die DB oder sonst wohin
weiterleitet z.B. an eine Template Klasse die dadurch eine Profilseite erstellt und und und.
Besser find ich ein Objekt aber darüber kann man glaube ich streiten.

Das befreit dich auch von der Sorge
Zitat:
das ich bei der sortierung fehler machen könnte und daher daten falsch verarbeitet werden
mfg

CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #8  
Alt 07.05.2011, 20:11:38
R4Zz0R R4Zz0R ist offline
Junior Member
 
Registriert seit: Sep 2009
Ort: Wetzlar/Kassel
Alter: 28
Beiträge: 201
R4Zz0R befindet sich auf einem aufstrebenden Ast
AW: Variablensicherheit

Nabend erstmal & danke für deine geduld und mühe.

Ich versuche es mal etwas besser zu erleutern was genau mir sorgen bereitet.

Zitat:
Derzeit sind ARRAY's "schick" und nicht einzelne variablen.
Stimmt daher nutze ich auch so gut wie nur arrays es sei denn es handelt sich um funktionsaufrufe. (Eins vorweg ich kenne auch array_walk und array_map es ist nicht das problem eine funktion auf ein array anzuwenden sondern aus einem array daten zu extrahieren und "sauber" zu übergeben)

Ein beispiel:
PHP-Code:
function tralalala($tra,$la,$lala) {
  return 
$tra.$la.$lala;
}

//normaler funktionsaufruf mit übergebenen daten wie in jedem tutorial zu finden
tralalala('tra','la','lala');

/**
 * ich verwende jedoch eine eigene funktion zum aufrufen
 * ein array mit einem offieziellen funktionsnamen als index der whitelist und dem eigentlichen   
 * richtigen funktionsnamen als inhalt whitelist ->funktion folgt:
**/
function onTheFly($getarr,$touse,$postarr,$fparam,$funkt) {
  if(
$fparam == 'post') {
      
$run call_user_func_array($touse[$funkt],$postarr);
  } else {
       if(isset(
$funkt)) {
          if(!empty(
$fparam)) {
            
$run call_user_func($touse[$funkt],$fparam);
          } else {
            
$run $touse[$funkt]();
          }
       }
    }
 return 
$run;
}

//ich hoffe der rest ist gut verständlich 

$getarr $_GET;
$postarr $_POST;
$touse['abcfunk'] = 'tralalala';//whitelist 
$fparam 'post'//wenn post dan (meist) mehrere werte, ansonsten übergabewert 
$funkt 'abcfunk'//offiezieller name der funktion (whitelist name der funktion)

//so nun werden über $postarr die 3 benötigten felder übergeben und die funktion 
//aufgerufen deren rückgabewert in $ret enthalten ist.
$ret onTheFly($getarr,$touse,$postarr,$fparam,$funkt);

//angenommen bei dem dazu benötigten formular ist was nicht in der richtigen reihenfolge
//naja erklären muss ich ja nicht viel .. werden daten falsch verarbeitet... 
Nun dachte ich wenn ich die benötigten variablen für die funktionen "vorbereiten" lasse
das ich mir dan diese funktion sparen kann. Anstelle dessen hätte ich dementsprechend eine steuerung für die aufrufe gebastelt.

Eventuell hast du einen vorschlag wie ich das problem mit der sortierung löse ohne mir einen neuen (ich bezeichne es halt so) funktionscontroller zu schreiben.

Anbei (fass das bitte nicht falsch auf)

Zitat:
Besser find ich ein Objekt aber darüber kann man glaube ich streiten.
Stimmt ^^ nenn mich altmodisch aber ich schreibe prozedual daher sind klassen keine option für mich. (bitte lass uns das jetzt nicht in eine pro/kontra diskussion ausarten lassen)

Funktionale programmierung finde ich ausreichend für meine zwecke.
(funktionen erledigen das wichtigste der rest ist nur die steuerung der aufrufe und der ausgaben um mal zu erläutern was ich unter funktionaler programmierung verstehe)


LG & Danke Nochmals

R4Zz0R
__________________
Wachsen kann man entweder:

Körperlich -> Man wird größer.
^ Ist so von der Evolution gewollt.

Charakter -> Man wird Geduldiger.
^ Man wächst mit der aufgabe

Kopf -> Man wird Klüger.
^ Wenn die aufgabe probleme macht & man trotzdem deine lösung findet.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:26:32 Uhr.


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


© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt