Pomóżcie, bo już zaczynam świrować.
Dodajemy post do bloga. Tytuł wiadomości filtruję tak:
if(!isset($_POST['message_title']) || !validate(post('message_title'), '/^[a-zA-Z0-9\-\!]{1,64}$/')) $error_messages->append('...');
Z tym nie ma większego problemu.
Do edycji samej wiadomości używam TinyMCE. Z tego co zdążyłem się zorientować to jeżeli w jej treści znajdzie się niestandardowy znak (np. < lub &) to TinyMCE zamienia go na jego "entity name". Sen mi z powiek spędza to, że do bazy lecą apostrofy. Używam oczywiście prepared statements, nie sklejam zapytań, ale jak widzę w bazie:
Kod
<p>test016-desc</p>
<p>;</p>
<p>"</p>
<p>'</p>
<p>></p>
<p><</p>
<p>?</p>
<p><script type="text/javascript">alert(1);</script></p>
...to niezbyt mi się to podoba.<p>;</p>
<p>"</p>
<p>'</p>
<p>></p>
<p><</p>
<p>?</p>
<p><script type="text/javascript">alert(1);</script></p>
Czy addslashes załatwi tutaj sprawę?
Zastanawiam się co zrobić kiedy ktoś wyłączy obsługę JS.
Proszę o jakieś wskazówki.