AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein PHP - sind hier "Sicherheitsexperten" an Board?
Thema durchsuchen
Ansicht
Themen-Optionen

PHP - sind hier "Sicherheitsexperten" an Board?

Ein Thema von himitsu · begonnen am 29. Jun 2010 · letzter Beitrag vom 9. Aug 2010
Antwort Antwort
Seite 2 von 8     12 34     Letzte »    
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 22:44
Das ist auch nicht so sehr verschieden vom OOP anderer Programmiersprachen (klar gibt es auch hier Ausnahmen).
Es gibt aber einige gute Tutorials bzgl. OOP in PHP5. Vielleicht ist das hier einen Blick wert.

Meinen Vorrednern kann ich mich anschließen.
Gute Ansätze hast du in deinem CMS, aber man kann noch viel machen, um es zukunftsfähiger auszurichten.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#12

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 22:45
Ich kann dir als Referenz auch noch das Zend Framework empfehlen. Jenes ist zwar sehr langsam, als technischer Ansatz aber sicher einen Blick wert. Deren API, die abstrakte Implementation und das gesamte Konzept ist sehr gut Durchdacht und meiner Meinung nach echt lobenswert.
*hust* Da geht sie dahin, die Einigkeit. ZF ist nicht langsam - es hat aber einen gewissen Overhead wie jedes andere Full-Stack-Framework auch. Auf normaler Hardware und mit nem Opcode-Cache (aptitude install php-apc) ist die Performance sehr gut. Im Zweifel schicke ich dir mal ein paar Infos zu ZF-Applikationen mit denen ich beruflich zu tun habe. Da aenderst du dann gerne deine Meinung

Um noch kurz ein paar allgemeine Worte zum ZF zu verlieren: es verfolgt zwar denselben Ansatz wie Symfony (Full-Stack MVC-Framework), aber auf eine ganz andere Art und Weise (Symfony setzt auf Code Generation, Zend Framework laesst dich alles selbst machen). Fuer den Einstieg wuerde ich auf alle Faelle Symfony empfehlen, behalte aber die Ideen und Konzepte von ZF im Blick.

@himitsu: wenn du gerade erst PHP5 lernst, dann nutze die Chance und fang gleich mit MVC an. Dieses bisherige include functions.php Gefrickel ist Schnee von Gestern

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#13

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 22:47
Was wäre denn heutzutage die Alternative zu diesem "include-Gefrickel"?
Also wie kann ich mir die Umsetzung von MVC an dieser Stelle vorstellen?


Grüße,
Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#14

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 22:52
So umfangreich dass ich es hier nicht posten will. Da geschieht naemlich viel im Hintergrund. Mal ein Beispiel:

du rufst die URL hxxp://foo.bar/user/showprofile/alcaeus auf.
Uebers Routing habe ich folgendes URL-Schema definiert:
user/showprofile/:username

In diesem Fall leitet mich also der Controller ins user-Modul (Definiert durch die Klasse userActions) um und verlangt die Action showprofile (definiert durch die Methode executeShowprofile). Zusaetzlich wird der GET-Parameter "username" auf "alcaeus" gesetzt.
Dort lauf ich ins Model, um mir die Daten des Benutzers mit dem Namen "alcaeus" raussuchen zu lassen. Die Daten uebergebe ich an die View (einen Block HTML/PHP-Mischung, ein Smarty-Script, ein Twig-Template, etc.), welche im Hintergrund gerendert und ausgegeben wird.

Das wars jetzt kurz zusammengefasst - ein Blick durch die Einsteiger-Tutorials macht das eventuell noch verstaendlicher

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#15

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 23:05
Hallo,

@himitsu: Nun, deine Session und Kekse Verwaltung liest sich nicht so toll, wenn alles in einer Datei steckt. Ich kann dir nur sagen, dass ich für Sessions bisher immer mit PHPs eigenen Session-Funktionen gut aus kam und diese auch weiterhin bevorzuge.

@alcaeus: Ich muss gestehen, dass ich diese Information von einem Freund blind übernommen habe, der wie ich finde durchaus Ahnung von der Materie hat. Ich habe selbst mit Zend schon öfter mal was angefangen, aber bisher nichts wirklich am laufen. Wenn du sagst Zend wäre nicht langsam, dann glaube ich dir das auch. Solange ich selbst nicht Hand angelegt habe, kann ich wohl nur auf andere Meinungen verweisen.

Liebe Grüße,
Valle
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#16

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 23:16
Moin,

ich hab grad nochmal nen Blick in den Code geworfen. Nach PHP_Include() habe ich aufgegeben. Hier mal ein paar Punkte dazu:
  • der erste Parameter heisst $__file. Trotzdem uebergibst du in index.php5 immer wieder __LINE__. Was denn jetzt?
  • Der $__file-Parameter wird fuer die Fehlerbehandlung verwendet. Wenn du schon angeben willst, wo der Fehler seinen Ursprung hatte, guck dir mal debug_backtrace() an. Stack-Traces sind was Tolles
  • PHP-Quellcode:
    if ($AddScriptDir) $FileName = (@$Config['Scripts'] ? $Config['Scripts']
          : ($Config['RootPath'] ? $Config['RootPath'] . 'Scripts/' : dirname(__FILE__) . '/')) . $FileName;
    Soll ich? Also:
    • Gewoehn dir an, immer Klammerbloecke hinzuzufuegen.
    • Everytime you use "@", God kills a Kitten. Im Ernst, wenn du pruefen willst ob $Config['Scripts'] gesetzt ist und keine E_WARNING kassieren willst, pruef mit isset().
    • Tertiaere Operatoren ($foo ? 'bar' : 'baz') sind spaerlich zu nutzen. Das kann schnell mal schiefgehn.
    • Verschachtelte Tertiaere Operatoren sind noch viel schlimmer.
  • Ok, weiter im Programm:
    PHP-Quellcode:
    $FileName = preg_replace('#\.php$#i', $Config['Ext'] ? $Config['Ext'] : ((($X = dirname(__FILE__)
          . '/Functions.*') && ($Y = glob($X))) ? substr($Y[0], strlen($X) - 2) : '.php'), $FileName);
    Siehe oben. Ich fang jetzt gar nicht weiter an, vielleicht magst du den Code ja kurz erklaeren.
  • Log_WriteFile: schmeiss lieber ne Exception und registrier nen Exception-Handler (set_exception_handler()). So kannst du in der Applikation auch individuell auf Fehler reagieren.

Und um die ganze Funktion ad absurdum zu fuehren: guck dir mal set_include_path() an. Auch das bereits erwaehnte spl_autoload ersparen dir da einige WTF-Momente.

BTW, ich hab den Code jetzt mal durch PHPMD gejagt. Allein die Funktion Main_Initialize() hat ne Cyclomatic Complexity von 74 (alles ueber 10 gilt als unwartbar) und ne NPath von 1067489280. Das bedeutet dass es ueber eine Million Ausfuehrungspfade durch die Funktion gibt. Alles ueber 300 sollte da refactored werden. Ich hab dir mal das Ergebnis angehaengt - mehr Informationen findest du auf der obigen Webseite.

@Valle: ein oft gemachter Fehler ist, dass eben der Opcode-Cache weggelassen wird. Das geht auf Dauer echt auf die Performance. Ich kann aber von der Performance nichts schlechtes berichten, und das bei echt grossen Anwendungen (mehrere 100k LOC).

Greetz
alcaeus
Angehängte Dateien
Dateityp: txt phpmd.txt (9,7 KB, 14x aufgerufen)
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de

Geändert von alcaeus (29. Jun 2010 um 23:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#17

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 23:37
Ach, und noch was: ich hab nur kurz ueber die Functions.php5 drueber geguckt, aber die Sicherheitsluecke in Main_Fialize() bei aktiviertem Debug-Mode ist schon schnuckelig. So einfach war es noch nie, HTML-Code in die Seite reinzupruegeln. Cross-Site-Scripting wie man will. Auch wenns der Debug-Mode ist, die direkte Ausgabe von GPC-Variablen ist ne saudumme Idee.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#18

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 29. Jun 2010, 23:56
Mhm...ich will da jetzt auch was lernen, damit mir das selbst nicht passiert

Wie könnte man denn nun damit eine Cross-Site-Scripting Attacke fahren bzw. wo liegt denn jetzt die böse Lücke?
  Mit Zitat antworten Zitat
Hisoka

Registriert seit: 2. Jan 2008
Ort: im Norden
53 Beiträge
 
FreePascal / Lazarus
 
#19

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 30. Jun 2010, 00:22
Mhm...ich will da jetzt auch was lernen, damit mir das selbst nicht passiert

Wie könnte man denn nun damit eine Cross-Site-Scripting Attacke fahren bzw. wo liegt denn jetzt die böse Lücke?
Simpel, es wird dort alles ausgegeben was z.B. im get Array ist. Somit muss man da nur etwas java script reinpacken und man kann mit dem zielrechner (also der jenige der ein link zur präparierten seite bekommt) machen was man will(dein Antivirenprogramm hilft nicht wenn man über ne IE/Chrome/... Lücke und etwas JS kompletten zugriff auf das system bekommt ==> ja das geht)
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#20

AW: PHP - sind hier "Sicherheitsexperten" an Board?

  Alt 30. Jun 2010, 00:27
Wenn ich das jetzt richtig verstanden habe. ist das aber nur deswegen eine Sicherheitslücke, da die GPC-Variablen vor der Ausgabe nicht gefiltert / escaped werden, so dass man eben auch JS-Code per GET oder POST einschleifen kann, richtig?
Würde man die Variablen vorher überprüfen und analog dem Konzept "traue keinem User-Input" vorgehen, wäre die Debug-Ausgabe ja kein Problem mehr.
Oder habe ich es nun doch nicht gepeilt...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 8     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz