php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.01.2009, 00:30   #1 (permalink)
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard Benutzerdefinierte BB-Codes erlauben - Sicherheit?

Hallo,

ich erlaube in meiner Software das Erstellen von eigenen BB-Codes, z.B. könnte ein Nutzer den BB-Code [bgcolor=#ff9900]Oranger Text[/bgcolor] haben wollen. Der Code den der Administrator dann anlegt, sieht in etwa so aus: [bgcolor={option}]{param}[/bgcolor]. Alles soweit kein Problem und auch bereits längere Zeit implementiert. Hier ein Ausschnitt aus dem Parser:
PHP-Code:
// ...
function customBB ($text) {
    foreach (
$this->custom as $re) {
        
$param = ($re['twoparams'] ? '=([^\]\'\"]*?)' ''); // Paramter for Opening Tag
        
$regexp '\['.$re['bbcodetag'].$param.'\]'// Opening Tag
        
$regexp .= '(.+?)'// Getting content
        
$regexp .= '\[\/'.$re['bbcodetag'].'\]'// Closing Tag
        
$text preg_replace('~'.$regexp.'~is'$re['bbcodereplacement'], $text);
    }
    return 
$text;
}
// ... 
Nun zum Problem der derzeitigen Implementation: Es ist möglich vom User z.B. folgende Eingabe zu erhalten: [bgcolor=#ff9900;float:left]Text[/bgcolor]. Das ist ja nun nicht wirklich Sinn der Sache und stellt in meinen Augen auch ein Risiko dar (<, ", ' und > sind hingegen nicht möglich. Wäre ja noch schöner...). Da ich nun aber nicht auch noch generell das ; sperren kann (wo bliebe sonst die Universalität), muss eine andere Lösung her.

Mein Vorschlag wäre dieser:
Anstatt der Platzhalter {option} und {param} erstelle ich Platzhalter wie {hex:1}, {text:1}, {number:1}, {url:2} und von mir aus auch {[a-z;0-9_]+:5}. Der Teil vor dem Doppelpunkt würde dann dem Typ der Validierung entsprechen und der Teil danach der eindeutigen Zahl des Parameters (damit später exakt bekannt ist, was mit was ersetzt wird). Ob ich nun reguläre Ausdrücke zulasse, ist dabei ein weiterer Diskussionspunkt. Ich sehe dabei nur das Problem, dass ich (ohne reguläre Ausdrücke) kaum oder nur schwer alle möglichen bzw. gewünschten Muster abbilden kann. Außerdem würde sich natürlich die Spezifikation zur Erstellung von solchen BB-Codes ändern, d.h. alle vorher erstellten Codes werden ungültig, was jetzt natürlich das kleinere Elend wäre.

Was meint ihr dazu und/oder habt ihr bessere Vorschläge?

Würde mich über Antworten freuen.

Mit freundlichen Grüßen
MaMo
MaMo-Net ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 04.01.2009, 19:53   #2 (permalink)
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.232
PHP-Kenntnisse:
Fortgeschritten
dr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäredr.e. sorgt für eine eindrucksvolle Atmosphäre
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo,

an dieser Stelle würde ich aus Sicherheitsgründen nur definierte Codes (z.B. [orange]...[/orange]) zulassen. Das erleichtert dir zum einen die Implementierung, zum anderen ist es der Sicherheit dientlich.

Weiterer Vorteil ist, dass die Definition sehr einfach gestaltet werden kann. Die RegExps sind einfacher bzw. kann man sogar ohne RegExps und mit strpos() + substr() arbeiten.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 04.01.2009, 22:19   #3 (permalink)
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard

Implementiert wird es auf jeden Fall, vB, phpBB und Co. schaffen das schließlich auch. phpBB macht es auch ähnlich dem Vorschlag oben. Keine weiteren Ideen und Vorschläge vorhanden?
MaMo-Net ist offline   Mit Zitat antworten
Alt 04.01.2009, 22:54   #4 (permalink)
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Soll es auf jeden Fall bei der Signatur
Code:
function customBB ($text) {
bleiben, also alles in einer Zeichenkette, die Du dann parsen lässt?
Ich denke da insbesondere an callbacks, die für Tags aufgerufen werden, die nicht von Deiner Syntax abgedeckt werden. Du musst Dich ja nicht unbedingt für die "einer in einer Million"-Fälle krumm machen
David ist offline   Mit Zitat antworten
Alt 04.01.2009, 22:57   #5 (permalink)
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard

Hi,

also gegeben ist auf jeden Fall ein String und es muss auch ein String zurückgegeben werden, was dazwischen passiert ist im Grund egal. Wieso fragst Du? An was dachtest Du?

MfG MaMo
MaMo-Net ist offline   Mit Zitat antworten
Alt 04.01.2009, 23:12   #6 (permalink)
Benutzer
 
Benutzerbild von echo
 
Registriert seit: 20.09.2008
Beiträge: 84
PHP-Kenntnisse:
Anfänger
echo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wie wär's denn damit, eine Whitelist anzulegen, in der nur jene Attribute enthalten sind, die Du genehmigen willst? Kenne mich zwar noch nicht so sehr damit aus, beschäftige mich aber gerade intensiv mit dem Thema Whitelists, etc.

( Whitelists und Verifikation )

Gruß
l.
echo ist offline   Mit Zitat antworten
Alt 04.01.2009, 23:14   #7 (permalink)
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von MaMo-Net Beitrag anzeigen
An was dachtest Du?
Hab noch etwas nachgeschoben (schnell genug, um den "editiert..." zu entkommen, aber nicht schnell genug, um Dir zu entkommen )
David ist offline   Mit Zitat antworten
Alt 12.01.2009, 22:19   #8 (permalink)
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard

Hi,

tut mir leid, dass ich mich so lange nicht gemeldet habe. Hatte leider auf der Arbeit viel zu tun. Nun zurück zu meiner Anfrage und euren Antworten. Vielen Dank erstmal dafür. Callbacks sind natürlich möglich, allerdings sehe ich im Moment keinen Vorteil, da Du auch nicht genau schreibst, was in den Callbacks ablaufen soll. Wie soll ich da dann feststellen, ob die Daten "sicher" sind?
Whitelists sind leider zu restriktiv, da man ja auch dort nur wieder nur bestimmte Fälle eingeben kann und nur diese dann möglich sind. Das Problem ist halt, dass es nach Möglichkeit noch flexibel sein soll und ich kann schlecht alle möglichen Einsatzfälle in einer Whitelist ablegen.

Ich habe mir nun mal das Vorgehen der anderen Forensysteme angesehen.
Viscacha: siehe Themenstart
MyBB: Benutzer spezifiziert reguläre Ausdrücke + Ersetzung
phpBB 3: Benutzt eine Variante die meinem Alternativvorschlag sehr ähnelt, siehe Themenstart
IPB: Gleiche Vorgehensweise wie Viscacha, inklusive der o.g. "Problematik"
vBulletin: Gleiche Vorgehensweise wie Viscacha, inklusive der o.g. "Problematik"
Nicht unterstützt: DeluxeBB, UseBB, Quicksilver Forums, punBB, IceBB, SMF

Ergo scheint es drei Alternativen zu geben:
1. Die simple, bereits implementierte Variante
2. Die Nutzung von Platzhaltern mit bestimmten Filtern, anstatt der ungefilterten Platzhaltern (der o.g. Vorschlag)
3. Eingabe von kompletten regulären Ausdrücken

Welche Variante würdet ihr bevorzugen? Einmal aus Sicht des Software-Entwicklers, einmal aus Sicht des Forum-Admins...

Danke und Gruß
MaMo

Geändert von MaMo-Net (12.01.2009 um 22:40 Uhr).
MaMo-Net ist offline   Mit Zitat antworten
Alt 13.01.2009, 00:01   #9 (permalink)
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von MaMo-Net Beitrag anzeigen
Callbacks sind natürlich möglich, allerdings sehe ich im Moment keinen Vorteil, da Du auch nicht genau schreibst, was in den Callbacks ablaufen soll. Wie soll ich da dann feststellen, ob die Daten "sicher" sind?
Garnicht. Das ist dann die Aufgabe des Coders, der den bbCode erstellen will, der sich von Deiner (einfachen) Syntax nicht erfassen lässt.
David ist offline   Mit Zitat antworten
Alt 15.01.2009, 19:34   #10 (permalink)
Erfahrener Benutzer
 
Registriert seit: 05.09.2004
Beiträge: 106
PHP-Kenntnisse:
Fortgeschritten
MaMo-Net
Standard

Da ist nur das Problem, dass die Oberfläche zum erstellen an normale Foren-Administratoren gerichtet ist und nicht an Programmierer, dann bräuchte ich die Oberfläche gar nicht. Im Endeffekt wird es wohl eine Mischung aus Variante 2 und 3, aber das muss ich nochmal genauer konzipieren...
MaMo-Net ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
lesen ohne codes clemo PHP Tipps 2008 4 06.12.2008 16:33
BACKLINK CHECK und SICHERHEIT von zentraler CSV-Datei ff-webdesigner.de PHP-Fortgeschrittene 16 27.11.2008 20:25
Sessions und die Sicherheit. Verständnisfrage. litterauspirna PHP Tipps 2008 7 30.10.2008 09:39
sicherheit SteiniKeule PHP Tipps 2008 9 20.10.2008 06:48
[Erledigt] Sessions und Sicherheit Wolla PHP Tipps 2008 16 01.08.2008 19:33
Sicherheit in PHP robydog PHP Tipps 2008 52 10.05.2008 13:09
HTML erlauben, php nicht? BartTheDevil89 PHP Tipps 2007 4 22.07.2007 03:42
Codes umwandeln stani PHP Tipps 2006 1 11.11.2006 14:30
Erfahrung mit Sessions ( Sicherheit ) GELight PHP Tipps 2006 6 11.08.2006 17:55
mal eine Kleine frage zu dem ! in PHP Codes imported_DJ Nuno PHP Tipps 2005-2 2 23.10.2005 15:55
Sicherheit.... renzo PHP Tipps 2005-2 1 27.06.2005 15:53
Code's tomtaz HTML, Usability und Barrierefreiheit 3 09.06.2005 20:56
Sicherheit von Klartext-Passwörtern PHP Tipps 2005 14 30.03.2005 15:22
Thema Sicherheit? PHP-Fortgeschrittene 5 05.11.2004 05:43
Sicherheit bei URL-Übergabe pcschröda PHP-Fortgeschrittene 25 28.06.2004 16:44

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
bgcolor codes, phpbb3 html erlauben, phpbb html erlauben, benutzerdefinierte bbcodes, phpbb sicherheit, phpbb codes, bbcodes sicherheitslücke, ipb html erlauben, phpbb3 php erlauben, html code und boardcode erlauben, benutzerdefinierte bbcodes erstellen, javascript in phpbb beiträgen erlauben, phpbb3 bbcodes erstellen javascript, eigene bb codes definieren smf, smf html erlauben, phpbb3 benutzerdefinierte bb, sicherer bbcode implementation, wo ist der bereich für benutzerdefinierte bbcode-tags phpbb3, html code erlauben sicherheit, smf bulletin board code

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:18 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum