Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][JavaScript]Zabezpieczenia Edytora
Forum PHP.pl > Forum > Przedszkole
FlashSplash
Witam serdecznie! Szybko, krótko i treściwie napiszę o co chodzi.

Mam problem związany z bezpieczeństwem. Nie chcę robić BBCode, tylko bezpośrednio wysyłać formularz do bazy.
Otóż mam edytor na stronie: http://code.google.com/p/jwysiwyg/ , który jest wyświetlany jeśli user ma włączony js. Jeśli nie, to pokazuje mu się po prostu zwykłe textarea.

Jeśli wpiszę do edytora jwysiwyg coś typu <javascript> to zamienia to oczywiście na &lt;javascript&gt; , za to jeśli przy pomocy edytora np. pogrubię czcionkę to wysyła do serwera <b>hahah</b> tak jak powinno. Jednakże bez js jak ktoś wpisze jakiś skrypt - jestem w niebezpieczeństwie, bo to prześle bez konwertowania. Dlatego też dodałem parę linijek:

  1. $content = str_replace('<script', 'javascript-error', $content);
  2. $content = str_replace('<?php', 'php-error', $content);
  3. $content = str_replace('<?', 'php-error', $content);
  4. $content = str_replace('?>', 'php-error', $content);
  5. $content = str_replace('</script>', 'javascript-error', $content);
  6. $content = str_replace('<iframe', 'iframe-error', $content);

Za to wyżej jest:
  1. $content = mysql_real_escape_string($_POST['content']);


Czy to wystarczy? Czy powinienem zrobić to w inny sposób? Zależy mi na bezpieczeństwie.
!*!
Niepotrzebnie robisz to str_replace, jest to zbędne, wystarczy jak użyjesz htmlspecialchars i mysql_real_escape_string bo z tego co rozumiem użytkownik ma mieć możliwość wstawienia kodu, jednak bez możliwości wykonania.
FlashSplash
Z możliwością wykonania, ale potrzebuje jedynie takie znaczniki jak <strong></strong>, <a href=""></a>, <ul style=""><li></li></ul> itp. Takie podstawowe. Da się zezwolić tylko na te które chcę?
!*!
Popatrz na dokumentacje strip_tags, masz tam możliwość wybrania znaczników które mogą zostać dopuszczone.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.