Beiträge von ragout

    Dachte dass du was drauf hast.
    Verfolge diesen Thread nicht mehr.


    Du nennst Aspekte der Sicherheit und verbindest diese Techniken die in einem unteren Niveau mit Sachen die über das Niveau sind, und behauptest dann dass du die Grundbausteine einer CMS nicht den Menschen beibringen willst.

    Sorry.

    Nicht in diesem Thread, vielleicht in einem anderen? Hier möchte ich die theoretischen Sachen erläutern, mal schauen, eventuell erstelle ich ja ein Tutorial wo wir all das, was wir hier gelernt haben, in der Praxis anwenden.

    Fang mal langsam an mit der Userclass.

    Ich rede hier von einem Guide, ich programmiere nichts vor.
    Aber wenn du es unbedingt willst:


    Ich habe es nicht getestet!!!

    Sehr geehrte RetroTown Community!

    Da mittlerweile immer mehr User ein eigenes Content-Management-System auf die Beine stellen wollen, möchte ich einen Guide verfassen der Dir bei der Programmierung helfen kann.

    Zunächst möchte ich folgendes erwähnen:
    Es ist noch kein Meister vom Himmel gefallen! Du wirst, sofern es dein erstes CMS ist, oft auf die Beine fallen und an vielen Sachen scheitern - das ist aber normal! Viele Entwickler fangen so an. Du musst die Homepage auch nicht im objektorientierten Style schreiben!
    Als Beispiel nenne ich die Plattform "Facebook", welche Anfangs auch prozedural geschrieben war, sie wurde erst später umgeschrieben.

    Gliederung des Guides

    • Sicherheit
      • CSRF (Cross-Site-Request-Forgery)
      • SQLi (SQL injection)
      • XSS (Cross-Site-Scripting)
    • Objektorientiert oder Prozedural?
      • Objektorientierte Programmierung
        • Pattern? MVC!
      • Prozedurale Programmierung
    • Design (UI)
      • Animationen - Ja oder nein?
      • Flat - Ja oder nein?

    1. Sicherheit
    Habbo Retros sind dafür bekannt, in Punkt Sicherheit nicht das Gelbe vom Ei zu sein. Genau aus diesem Grund möchte ich die drei wichtigsten und gefährlichsten Sicherheitslücken ansprechen.

    1.1. Cross-Site-Request-Forgery
    CSRF war bis vor einem Jahr noch so gut wie keinem in der deutschen Szene bekannt und doch ist es so gefährlich. Doch was geschieht dabei eigentlich?

    Zitat von RetroTimes

    Beim sogenannten Cross Site Request Forgery kurz CSRF oder XSRF handelt sich es sich um eine indirekte Angriffstechnik auf verwundbare Stellen einer Webseite. Dabei wird eine Person aufgefordert, eine URL aufzurufen, die (versteckt) eine Aktion auf der Homepage auslöst - so zum Beispiel das Ändern oder Speichern von Einstellungen. Im Namen des eingeloggten Benutzers, der die URL aufruft, wird das jeweilige HTML-Formular ausgefüllt und anschließend an den Server abgesandt - ohne, dass das Opfer davon Wind bekommt. In letzter Zeit treten mehr und mehr Vorfälle auf, bei denen Angreifer diese Technik auch für die - wenn man's so nennen darf - Übernahme eines Retro Hotels anwenden oder versuchen, Manipulationen an einem Hotel durchzuführen.


    Wie kann man sich davor schützen?
    - durch diverse Skripte, welche sogar schon hier, auf RetroTown, veröffentlicht wurden!
    ([PHP] Sicherheitssystem - AntiCSRF oder [PHP] CSRF Protection by Steve)

    1.2. SQLinjection
    SQLinjections erragen in der Szene großes Ansehen und werden nahezu tagtäglich an Retros ausprobiert. Die Erklärung ist ganz simpel:
    Bevor ein Wert in eine Datenbank-Tabelle eingetragen oder geupdatet werden kann, sollte er davor "escaped" werden. Ist dies jedoch nicht der Fall, so kann der Angreifer Befehle über diesen Wert ausführen lassen.
    Problemlösung:
    bei mysql_* http://php.net/manual/de/func…cape-string.php
    bei mysqli:: http://php.net/manual/de/mysqli.real-escape-string.php

    Beispiel (mySQLi):

    Spoiler anzeigen


    Unsicher:
    Sicher:

    1.3. Cross-Site-Scripting
    XSS ist wohl die bekannteste Methode auf RetroTown. Durch diese Sicherheitslücke ist es möglich, HTML5-Codes auf der Homepage ausgeben zu können.
    Beispiel: Der User wählt in einem diversen Habbo Retro als Motto "<script>alert(1);</script>".
    Lösung: Die Ausgabe, sprich der String, muss erst noch konvertiert werden. Dazu gibt es in PHP mehrere Methoden, wobei ich auf htmlspecialchars (http://php.net/manual/de/function.htmlspecialchars.php verweisen möchte.).
    Nutzung:

    Spoiler anzeigen


    Unsicher:
    Sicher:

    2. Objektorientiert oder Prozedural?
    Das ist die wichtigste Frage - wie wird der Code aufgebaut sein?
    Zunächst möchte ich nochmals etwas wichtiges Erläutern: Lass dich von einem runtermachen, wenn du kein OOP kannst!
    Wenn du kein OOP beherrschst, ist die Frage für dich schon beantwortet: Prozedural! (natürlich darfst und sollst du weiterlesen :P)

    2.1 Objektorientierte Programmierung
    Bei OOP stellt sich die Frage, ob man ein Framework benutzen möchte und/oder welches Pattern benutzt wird, falls man sich für eins entscheidet). Ich beziehe mich ausschließlich auf das Model-View-Controller Pattern.
    MVC Beispiel:

    Grafik


    2.1.1 Pattern? MVC!
    Das Model-View-Controller Prinzip hilft dir, den Sinn von OOP einzubehalten. Es sollte im Idealfall alles voneinander trennen.
    Der User bekommt ausschließlich die View zu sehen. Diese wird vom jeweiligen Controller zugewiesen und erhält alle wichtigen, nicht statischen Infos aus dem Model.
    Hier ist eine genauere: http://net-developers.de/2009/07/24/mvc…nackig-erklart/
    Ich empfehle dieses Pattern jedem, der sich dazu entscheidet, das Content-Management-System im objektorientiertem Style zu schreiben.

    2.2 Prozedurale Programmierung
    Bei der Prozeduralen Programmierung wird nicht zwischen einem Controller, einer View und einem Model unterschieden, dann sowas gibt es dort nicht! Im Grunde genommen wird dort der Code einfach von oben nach unten geschrieben. Datenbank-Abfragen geschehen sogar noch nach der ersten HTML-Ausgabe.
    Der Vorteil davon ist, dass der Code schneller ist, da er keine Klassen erstellen muss, Abhängigkeiten und Zugehörigkeiten müssen ebenfalls nicht gecheckt werden.
    Der Nachteil: Es ist unübersichtlich! Während bei OOP nur eine Klasse das kann, was sie tun soll, gibt es bei dem sog. "Spaghetti"-Code mehrere Funktionen deren Berechtigungen nicht klar definiert sind.

    3. Design (User Interface)
    Die graphische Oberfläche ist der wichtigste Bestandteil, weshalb dieser auch am meisten Unterpunkte vorweisen kann. Sie ist für den ersten Eindruck zuständig, welchen man niemals vernachlässigen sollte!

    3.1 Animationen - Ja oder nein?
    Ich mach es kurz und knapp: Ja! Animationen sind ein muss! Desto smoother der Übergang zwischen Prozessen, desto besser.
    Aber aufgepasst: Nicht zu viele verschiedene Typen und auch nicht übertreiben! Bei der Erstellung des Layouts sollte man sich im klaren sein, welche Übergange verwendet werden. So zum Beispiel sollte jedes Popup die gleiche Öffnen- & Schließanimation besitzen.
    Doch auch auf die Zeit, die die Animation verwendet, kommt es an. Ein Effekt sollte keine Sekunde in Anspruch nehmen, aber auch keine 0.1s. Man muss also etwas geeignetes finden! Jedoch gibt es noch viele andere Sachen, bei denen ein flüssiger Übergang bestehen sollte: Ladebalken, Asynchrones nachladen von Informationen, Übergange von Seiten (sofern Seite komplett auf Ajax basiert) und vieles mehr!

    3.2 Flat - Ja oder nein? (persönliche Meinung)
    Diese Frage kann man nicht mit einem "Ja" oder einem "Nein" beantworten. Man fragt sich vielleicht, wieso ich nun die Frage so gestellt habe und das hat auch einen einfachen Grund: So lauten oft die Antworten in diesem Forum!
    Ich möchte darauf eingehen, was die Vorteile und Nachteile von Flat/Material Design sind:
    Es ist einfach ein schönes, modernes Design mit Materials zu erstellen. Doch Habbo ist (mehr) modern! Selbst die vielen, sogar meist gut aussehenden Versuche in diesem Forum haben noch Fehler. Ich möchte euch nicht verbieten, ein Flat-Habbo Design zu versuchen, doch die Chance, dass es scheitern und auf schlechtes Feedback trifft, ist groß. Habbo sollte in meinen Augen nicht modern sein und auch kein Material-Design nutzen. Selbst "Kunta" (https://forum.ragezone.com/f331/mvc-self-…cms-4-a-1047953) ist in meinen Augen kein Meisterwerk.
    An dieser Stelle möchte ich mich für diesen Unterpunkt entschuldigen, da ich hierbei nur eine persönliche Meinung abgeben kann. Im großen und ganzen kann ich jedoch sagen (abgesehen vom Konzept der Seite): Flat? JA!

    Schlussendlich möchte ich nochmal erwähnen, dass das meine Ansicht zu den Aspekten ist. Diese Meinung konnte ich mir im Laufe der vergangenen Monate bilden. Ich bitte euch, diese zu respektieren und zu tolerieren. Feedback ist gerne gesehen!

    Mit freundlichen Grüßen
    Ich.

    ich kenne mich damit nicht aus und habs zum ersten mal durch dich gesehen. Ich frage mich wozu man sich das antun sollte o.o nur wegen dem kleinen compiler den der endbenutzer eh nicht sieht? Wozu dieser Umstand? Lieber einfach cpp und gut ist o.o

    brainfuck ist aber relativ einfach & nur rechnen
    cpp wäre nicht das Ding, aber ich interessiere mich nicht für sowas

    Habe mal eine Erklärung geschrieben.. zumindest hab ichs versucht [Brainfuck] Erklärung

    Hi.

    Ich wollte euch mal brainfuq erklären.
    Zunächst: https://de.wikipedia.org/wiki/Brainfuck

    Wir schreiben den Text "Hallo"

    Was wir brauchen? http://stefan-lenz.ch/_pics/11/ascii.png & http://www.splitbrain.org/_static/ook/
    Wie gehen wir das an?
    -> Wir suchen uns erstmal alle wichtigen Ziffern raus: H > 72, a > 97, l > 108 & o > 111

    [0][0][0][0][0][0]
    Das sind unsere 7 Slots die wir zur Verfügung haben, wobei wir nicht alle benutzen werden!

    Erstellen wir nun das große "h":
    +++[>+++[>++[>++[>++<-]<-]<-]<-]>>>>.
    3 x 3 x 2 x 2 x 2
    Der Punkt dient als Ausgabe.

    Derzeit ist der Wert von unserem 4. Slot 72. Dazu müssen wir 25 addieren um auf das kleine "a" (97) zu kommen.
    Also erweitern wir folgendes:
    <+++++[>+++++<-]>.
    5 x 5
    Punkt dient wieder als Ausgabe.

    Da wir nur vor & zurück gegangen sind, um jeweils einen Schritt, sind wir immer noch im gleichen Slot, der nun den Wert 97 hat.
    Als nächstes addieren wir 11.
    <++[>+++++<-]>+.
    2 x 5 + 1
    Punkt = Ausgabe.

    Nun ist der Slot auf 108. Da ein "Hallo" zwei l hat, wäre es sinnlos etwas zu addieren oder subtrahieren, weshalb wir erneut einen Punkt schreiben!
    .

    Zuletzt folgt das o:
    +++.

    Der vollständige Code lautet nun:

    Brainfuck
    +++[>+++[>++[>++[>++<-]<-]<-]<-]>>>>.<+++++[>+++++<-]>.<++[>+++++<-]>+..+++.

    Beim Testen kommt heraus, dass er als Ergebnis "Hallo" hat - so wie wir es wollten.

    Wenn es Fragen gibt immer her damit!

    (PS: Bin noch am lernen, weshalb ich keine krasse Auskunft geben kann und auch nicht 100%ig bestätige, dass alles was ich verfasst habe legitim ist.)

    MfG

    Warum sind alle so CMS-fixiert?
    Seid ihr etwa von eurer ca. 2h Onlinezeit 1h 50min auf der Homepage und schaut alles durch und die restlichen 10 Minuten im Client?

    Mich würde nicht mal ein reCMS oder sonstiges aufhalten mich zu registrieren.
    Selbst wenn es mit Paint designt wurde und keine erkennbaren Elemente vorhanden sind, solange ein Eincheckbutton zu finden ist, ist doch alles gut?

    kaum fängt der mist mit dem oop an, will jeder sofort ein neues cms mit neuem layout und neuen programmierstilen/-sprachen sehen.
    es gibt keine features mehr, die man noch nie gesehen hat. und die neuen features sind meist useless shit.

    von meiner seite aus viel glück und spaß,
    der name ist cool aber bitte seid nicht so cms-fixiert wie alle hier wollen.
    größter fehler den man machen kann.

    Vollkommen richtig, endlich jemand der das erkennt!
    Das CMS sollte zwar sicher sein, aber man sollte den Schwerpunkt in der Entwicklung auf den Clienten legen.
    Wenn man sich überlegt, dass der Benutzer der Client ist, fällt einem auch direkt auf, wieso man dies tun sollte. Der Benutzer ist nämlich so gut wie nicht auf der Homepage vertreten. Natürlich sollte diese extras vorweisen können, aber solang der Client nichts hat, bringen diese so gut wie nichts.

    Wäre der Client von Anfang an im Vollbildmodus gewesen, hätte man wahrscheinlich auch eher damit angefangen, den Clienten zu modifizieren. Ich habe noch kein Hotel gesehen, welches ein tolles Overlay mit allen features hat, die es auch auf der Homepage gibt. Sowas sollte ja mittlerweile mit HTML5 ganz leicht umzusetzen sein.

    Viel Glück.

    - es interessiert keinen User, ob das CMS in OOP programmiert ist oder nicht, solang man seine Daten nicht an dritte verlieren kann

    +++++ +++++ [->++ +++++ +++<] >++++ ++.<+ ++[-> +++<] >++.- -.+.< +++++
    ++++[ ->--- ----- -<]>- --.<+ +++++ ++[-> +++++ +++<] >++.< ++++[ ->+++
    +<]>. <++++ [->-- --<]> -.+++ +++++ .++++ +.--- ----- .<+++ [->++ +<]>+
    +++++ .<+++ +[->- ---<] >--.+ +++++ ++.<+ +++++ ++[-> ----- ---<] >----
    ----- --.<

    +++++ +++++ [->++ +++++ +++<] >.+.< +++[- >+++< ]>+++ +.<++ +++++ ++[->
    ----- ----< ]>-.< +++++ ++++[ ->+++ +++++ +<]>+ +++.- -.<++ +[->- --<]>
    ----- .<+++ [->++ +<]>+ +++.< +++++ ++++[ ->--- ----- -<]>- .<+++ +++++
    +[->+ +++++ +++<] >++++ .---- ---.+ +++++ .<+++ [->-- -<]>- ----- .<+++
    [->++ +<]>+ +++.< +++++ ++++[ ->--- ----- -<]>- .<+++ +++++ [->++ +++++
    +<]>+ +++++ +++++ ++.-- --.++ +++++ ++.<+ +++++ +++[- >---- ----- <]>-.
    <++++ ++++[ ->+++ +++++ <]>++ +++++ ++.<+ ++[-> +++<] >+.+. <++++ +++++
    [->-- ----- --<]> ---.< +++++ +++[- >++++ ++++< ]>+++ .<+++ [->++ +<]>+
    ++..- --.<+ +++++ ++[-> ----- ---<] >---- ----- ---.<