Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Objektový WYSIWYM

Ukázka editoru WYSIWYM v PHP. Aplikace byla vytvořena do soutěže Machr na PHP za týden 24 v roce 2015. Aplikace je psaná objektově a využívá principu polymorfismu. Aplikace obsahuje ochranu proti útoku XSS.

WYSIWYM

WYSIWYM je editor textu, který ukazuje obsah tak jak bude vypadat a různé prvky textu jsou v něm označeny. Ve vstupu pro WYSIWYM lze vidět jednotlivě označené části textu. Krom WYSIWYM existuje ještě WYSIWYG (G na konci místo M) který funguje podobně, akorát přímo vidíte to,co bude výsledkem (nastylovány text).

Prvky WYSIWYM

Existuje několik variant,jak jsou prvky textu označovány. Zadání soutěže řeklo, že máme využít formátu Texy, který říká, že text by měl být označován následovně:

Nadpis1
#######

Odstavec
další řádek odstavce se neodřádkuje.

**Tučné** písmo a *kurzíva*

Nadpis 2
========

- položka seznamu1
- položka seznamu2

"http://www.itnetwork.cz":itnetwork

[* obrazek.png .(Obrázek) *]

Tady tento formát se má převést na formát HTML, který se pak zobrazí uživateli. Vstupem tedy bude na HTML stránce víceřádkové textové políčko.

Polymorfismus

Polymorfismus zde najdeme u rozhraní IConvertor což zastupuje převodník nějakého prvku. Implementovány jsou prvky nadpisu, odkazu, tučného písma, atd.

Dědičnost

Najdeme zde využité dědičnosti, přece nebudeme zvlášť implementovat nadpis1 a nadpis2 nebo tučný text a kurzívu. Vždyť to je přece úplně stejné!

Ochrana proti XSS

V článku Obrana proti útoku XSS v PHP si můžete přečíst jak XSS funguje. V jednoduchosti jde o to, že když se ve vstupu objeví <script>blablabla</script>, tak to samozřejmě nemůže fungovat, protože pak by si na naší stránce mohl pouštět, kdo chce, co chce.

Implementované to mám tak, že celý dokument naparsuju jako XML a pak rekurzivně projdu všechny elementy a ověřím jejich tag. Whitelist s tagy lze volitelně předat metodě pro ověřování, pokud udán nebude, strážce XSS si ho zjistí sám, tak že všechny převaděče požádá o seznam jimi povolených elementů (právě jsme narazili na druhou potřebnou metodu v rozhraní IConvertor).

Pokud rekurzí procházený element není na whitelistu jeho tag bude nahrazen elementem span, což je neutrální element.

Ke stažení je kompletně funkční WYSIWYM editor, který je také dočasně dostupný na jednom z mých webů .


Galerie

Program byl vytvořen v roce 2015.

 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 37x (74.52 kB)
Aplikace je včetně zdrojových kódů v jazyce PHP

 

Předchozí článek
Kvíz - Objektově orientované programování v PHP
Všechny články v sekci
Objektově orientované programování (OOP) v PHP
Program pro vás napsal Michal Žůrek - misaz
Avatar
Uživatelské hodnocení:
2 hlasů
Autor se věnuje tvorbě aplikací pro počítače, mobilní telefony, mikroprocesory a tvorbě webových stránek a webových aplikací. Nejraději programuje ve Visual Basicu a TypeScript. Ovládá HTML, CSS, JavaScript, TypeScript, C# a Visual Basic.
Aktivity