PHP

Aus AkiWiki

Wechseln zu: Navigation, Suche

PHP - Security

Entw. als 1 Tages-Seminar oder als Abendveranstaltung

Inhalt:

  • Anhand von Beispielen werden oft gemachte Sicherheitslöcher in PHP-Anwendungen

aufgezeigt und wie man diese vermeiden kann.

    • XSS
    • SQL-Injection
    • register_globals
    • Missbrauch von Mail-Formularen für SPAM

Vorraussetzung für dieses Seminar:

  • Grundkenntnisse in PHP, SQL, HTTP

jg == Jens Giessmann

webmaster at aki (- zusammen mit sf) Referent PHP Online Seminar


--

PHP Online-Seminare - http://www.handcode.de/php/aki-1/index.php - cool! k. 1811

--

...ein paradethema des AKI.

http://www.aki-stuttgart.de/programm.php - und dann PHP eingeben

k. 1812


aus 2004

Ich hatte die Tage nach dem WikiWiki Vortrag von KarlDietz die Idee als Anwendung beim OnlineSeminarPHP 2 ein MinimalWiki zu schreiben :-) Hatte ich Heute schon kurz mit EsEf darüber gesprochen.

Je länger ich darüber nachdenke desto besser gefällt mir die Idee. Das ich damit bei euch offene Tueren ein renne denk ich mir :-)


Naja, jetzt muss man sich "nur" überlegen, wie man die Idee eines Wiki auf einen so minimalen Stand runter bricht, dass man so was "Im Kleinen" innerhalb eines Seminares machen kann.

Also bin ich jetzt dabei die Grund Ideen eines Wikis zu sammeln und dessen fundamentalen Funktionen aufzulisten.

Das habe ich hier im Wiki jetzt einfach mal angefangen, ihr seid willkommen mit zu machen. - jg


Erstellen von Seiten:

Da ein Wiki keine vorgegebene Struktur hat, fängt jedes wohl mit einer Default Seite an die einfach mal leer ist.

Neue Seiten können nur durch Editieren und dabei durch neue Links erzeugt werden?


Funktionen:

Wenn das oben stimmt, sind ja im Prinzip die einzig zwingenden Funktionen die ein Wiki braucht, die Möglichkeit innerhalb von bestehenden Seiten den Ascii Text editieren und mit Wiki-Worten Links zu neuen Seiten erzeugen zu können.

Daraus ergeben sich die Einzel Funktionen:

  • Seite anzeigen
  • Seite erstellen
  • Seite / Text editieren
  • Seite speichern
  • Text nach Wiki-Worten und URLs parsen und diese ersetzen (Links bauen)
  • ...

TextFormatierungsRegeln:

Wenn man das auf funktional für ein Wiki notwendige Tags runterbricht, bleiben Wiki-Worte und externe Links übrig, s.o.

  • URLs -> Strings die mit http, https, ftp,... anfangen, bis zum nächsten Leerzeichen
  • Wiki-Worte -> Strings die mit eine Großbuchstaben anfangen, gefolgt von einer Kombination aus Groß- UND Kleinbuchstaben (beides muss vorkommen)

hi jens, was spräche denn gegen das einfach nehmen von AwkiAwki? viel minimaler geht echt nicht. ist auf dem aki-server incl. content. -dz

Guter Tip, wenn so was draus wird, wäre es ja klasse. Aber auch da muss man noch die Funktionen weiter runterbrechen, dass man einen Anfang, bzw. einen Plan / Weg hat.

Und, es soll ja wie gesagt innerhalb des Seminars als Übungs-Projekt funktionieren, muss also kein produktiv System werden.

Daher der obige Versuch es moeglichst auf noch weniger runterzubrechen. Satz und Schrift-Fotmatierung (Listen, fett, kursiv,...) sind ja schick, aber eben nicht zwingend notwendig. Ascii rules :-) -jg

  • was cool wäre: ein wiki mit feldern. ich denke, dass wäre mal was neues. ich meine sowas wie ERC vorschlägt. -karl
  • oder eben als ausgangspunkt awkiawki nehmen und das nach php portieren. -karl
  • du kennst mich ja, ich bin nicht so sehr für das prinzip: "jetzt fangen wir mal bei NULL an" -karl


Was du mit den Feldern meinst, ist mir nicht klar, helf mir mal auf die Sprünge. -jg

  • alle wikis die ich kenne, haben keine felder, wie in datenbanken üblich. ich fände es cool, wenn es ein wiki mit feldern wie in einer datenbank gäbe... -karl
    • Ah, jetzt, könnte man sich überlegen, macht die Sache aber auch komplexer (Felder brauchen Funktionen die was damit anfangen können), daher für das Seminar-Projekt wohl eher nicht, zumindest nicht in der Basic Version mal sehen. -jg
      • eine idee wäre ja auch: ein wiki als "admintool" für eine mysql-datenbank zu entwickeln. keine ahnung ob das sinn macht... :) -karl
        • UPS, also das ist denke ich ein Anwendungsgebiet das ich nicht in ein Wiki verpacken würde. Ein Admin-Tool sollte wohl nicht von jedem editierbar sein. Mal abgesehen davon, dass man dann dem Wiki erst mal beibringen müsste Server-Seitigen Code auszuführen und diesen zu editieren, was ich auch nicht jedem erlauben wollte, etc... -jg
          • wohl wahr! - ich meinte dann wohl eher ein content tool. :) -karl

zur Portierung: Es soll ein Übungsprojekt im PHP Seminar sein, auch wenn es nach aussen vielleicht so wirkt, man portiert so ein Wiki nicht einfach mal eben in eine andere Sprache, so trivial ist das nicht :-) -jg

Zu deinem "nicht bei Null" Prinzip: Wenn es drum gehen würde, dass ich auf einer Seite ein Wiki installieren soll, würde ich klar ein bestehendes verwenden, hier ist es aber eine Übungs Aufgabe, also kein reales Projekt und als Übung muss ich bei Null anfangen, denn die Teilnehmer sollen es ja (nach und nach) schreiben :-) -jg

  • 2x ACK zu deinen anmerkungen. (und wiki gefällt mir auf jeden fall besser, als ein gästebuch :)) -karl


  • Ein wiki ist so eine typische Anwendung die man aus reiner Neugier und zu Lehrzwecken entwickeln möchte und dann.. mal sehen was draus wird. AwkiAwki ich bin immer noch ein Fan von dem Ding, wie der Name schon sagt ist es in AwK programmiert, aber du (JG) überlegst ja was ist eigentlich der minimalste Kern. Es gibt auch ein minimalistisches Wiki in PerL, es heisst TinyWiki und kommt mit weniger als 100 Zeilen Perl aus! http://c2.com/cgi/wiki?TinyWiki Ein minimalistisches in PhP : Blastwiki http://www.roboticboy.com/blast/ -sf.

Beide o.g. find ich nett. Gute Tips, danke. Aber TinyWiki schummelt mit dem kleinen Perl-Script, denn die Suche ist ein weiteres Script :-).-jg

Zur Suche in meinem Prototyp, ich finde im Moment keine wirklich vernuenftige Loesung um die Dateien auf PHP-Basis zu durchsuchen, vor allem wenn es den Server nicht in die Knie zwingen soll sobald es mal mehr Dateien im Wiki werden.
Ich denke, die Suche wird erst dann implementiert, wenn ich die Datenhaltung von Datei basiert auf MySQL basiert umstelle. -jg

  • hi jens, wie macht es AwkiAwki? und eine idee: suche einfach sequentiell im volltext der dateien, bis die kniee zittern :) -lg karl


    • Ich denke mit System-Befehlen, muss ich mir noch mal genauer anschauen. Diese sind in PHP aber nur bedingt verfuegbar (safe_mode) und bringen den Seminar-Teilnehmern auch nur bedingt was, da eben auch nur auf Unix verfuegbar und die benoetigen dann auch ein Grundwissen ueber Unix. Die Suche im Volltext kann ich zwar machen, aber das ist wie gesagt so haesslich was die Performance angeht, dass ich es in einem Seminar lieber lassen wuerde :-) -jg
      • Jupp, AwkiAwki macht das System Befehlen, das ist nicht der Weg fuer das Seminar. Da es aber geplant ist, das Wiki erst Dateibasiert und dann MySQL basiert zu machen, bzw. dahingehend zu aendern, wird die Suche in der MySQL Version kommen. Ich denke es steckt so schon genug drin, dass es nicht langweilig wird. Ich habe jetzt noch ein wenig TextFormatierungsRegeln und einen Seiten-Index eingebaut, da gibt es ja kein Grenzen, lauter schoene RegEx Uebungen (nein Listen gibt es immer noch nicht :-) -jg
        • hi jens, ich freu mich auf dein wiki!! das wird eine gute sache!! eine idee noch: manche wikis haben die option: SeiteBeiAenderungMailen. die find ich gut. das ist dann ein bisschen PUSH im wiki... :)) -karl
          • Das ist sicher eine gute Funktion, die aber vorrausetzt, dass man sich als User in einem Wiki anmelden und dort seine Daten (Email-Adresse) hinterlegen kann. Und was ich mich bei der Funktion frage, muss man dann nicht auch eine Einschraenkung einbauen (koennen) bei welchen Aenderungen man eine Mail bekommen will? Wer will schon bei grossen wikis mit x1000 Seiten bei jeder Aenderung eine Mail bekommen. Ein Ansatz waere vielleicht, pro Tag/Woche... ein Sammelmail mit der Liste aus RecentChanges. -jg
            • in CoForum geht das einfach, indem man in die seite ein [1] einfügt.

So, nun habe ich dann also auch die andere Ecke des Spektrums der WikiImplementationen entdeckt :-) Ich habe mir mal die SW die hinter Wikipedia steckt angeschaut. http://wikipedia.sourceforge.net/features.html Ups! Das ist auch auf PhP MySQL Basis geschrieben hat aber nur noch recht wenig mit solche Scripten wie dem 96 Zeilen Perl Wiki zu tun. Hat aber auch einen ganzen Haufen sehr interessante Features wie z.B. Namens-Raeume fuer Seiten. Spannend. -jg

  • wow, das hört sich spannend an!! und hier noch eine art essenz für wiki von dem, der das teil als erster gemacht hat: steve w.: A WikiWikiWeb is a site where everyone can collaborate on the content. The most well-known and widely used Wiki is the Portland Pattern Repository at http://c2.com/cgi-bin/wiki?WikiWikiWeb. The point is to make the EditText? form simple and the SeiteFinden search fast. In addition to being quick, this site also aspires to Zen ideals generally labeled WabiSabi. Zen finds beauty in the imperfect and ephemeral. When it comes down to it, that's all you need. SteveWainstead (& k.)
Meine Werkzeuge