No0ne Posted September 29, 2008 Report Share Posted September 29, 2008 Sveiki! Ir tā, ka nolēmu ļaut lietotājiem paspēlēties ar HTML! BB-Kodi šķiet pārāk aprauti, protams, var izveidot jaunus, bet vai ir jēga? Kāpēc uzreiz neņemt no myspace piemēru? :) Īsumā ko cenšos izdarīt: Lietotājiem jāvar pievienot visu.. gandrīz visu.. ko viņi vēlas iekš HTML & tam smuki tā arī jāattēlojas! Taču es negribu, lai čakarētu lapu, ieliekot, piemēram, javascript alert, vai ifreimu kaadu! Tad nu izdomāju, ka rīkošos sekojoši - visu neatļauto aizstāsim, līdz ar to nevarēs neko nočakarēt.. Kods šāds: function html_dscr($s) { $s = str_replace("<script", "< s c r i p t", $s); $s = str_replace("<iframe", "< i f r a m e", $s); $s = str_replace("html>", "h t m l >", $s); $s = str_replace("body>", "b o d y >", $s); $s = str_replace("java", "j a v a", $s); $s = str_replace("<?php", "< ? p h p", $s); $s = str_replace("alert", "a l e r t", $s); $s = str_replace("cookie", "c o o k i e", $s); $s = str_replace("<frame", "< f r a m e", $s); $s = str_replace("charcode", "c h a r c o d e", $s); return $s; } Viss darbojās super, bet.. nonācu pie jaunas atklāsmes - ja script pārveido par sCript vai iframe par iFrame, tad tas neaizstaajas ar neko.. Rakstīt katram keywordam visus variantus kaut kā nevelk, varbūt ir kāda iespēja nočekot gan lielos gan mazos burtus, neko neizmainot? Nu, respektīvi, nevis tagad visu ar strtolower parvesam par lower case, bet vienkarsi atlaujam ignoret mazos lielos burtus! Tas ir svarigi, jo varetu jau visu uz lower pataisit, bet pienjemsim tas html kods, kuru lietotajs ievieto izskatas sadi: <b>Es šodien biju pie Elīnas</b> Tad sanaks, ka, lai parbauditu vai <b> nav aizliegtie keywordi, viss tiks parmests uz lowercase un lidz ar to teikuma sakums un iipashvaards bus ar mazo burtu.. Datoram gan explorer nestrada, tadelj nezinu cik sobrid isti pulkstens, bet domaju, ka ir vels, tadelj atvainojiet, ja nesakarigi sarakstits, bet ceru, ka sapratisiet :) Paldies! Link to comment Share on other sites More sharing options...
andrisp Posted September 30, 2008 Report Share Posted September 30, 2008 http://lv.php.net/manual/en/function.str-ireplace.php Es gan apšaubu šādas sistēmas necaurlaidīgumu. Labāk gan būtu veidot whitelist, ko laist cauri. Neesmu gan pats jūzājis, bet šis izskatās tieši tas, kas tev vajadzīgs: http://htmlpurifier.org/ Link to comment Share on other sites More sharing options...
Maris-S Posted September 30, 2008 Report Share Posted September 30, 2008 (edited) Man šķiet ka Tev varētu noderēt arī funkcija strip_tags. Tomēr jebkurā gadījumā gan izmantojot savu variantu, gan šo funkciju padomā arī par citām iespējām iemānīt kaut vai to pašu javascriptu, piemēram, ja atļausi likt <a> tagu, tad ņem vērā ka javascriptu var pievienot linkam iekšā: <a href="java script: alert('Ziņojums');">Nosaukums</a> Vai arī: <a href="links" onclick="java script: alert('Ziņojums');">Nosaukums</a> Edited September 30, 2008 by Maris-S Link to comment Share on other sites More sharing options...
No0ne Posted September 30, 2008 Author Report Share Posted September 30, 2008 Paldies, pamēģināšu purifieru :) Nejau tādēļ, ka str_ireplace nedara to, ko es vēlos, tā dara un vēl pie tam tieši tā kā vēlējos, taču Maris-s pareizi pieminēja, ka to visu nevar tā smuki repleisot, jo ir dažādi paņēmieni.. Ar Māra doto piemēru gan biju ticis galā jau sākumā un tik tālu aizdomājies, taču ir pretīgāki paņēmieni, ar kuriem traks paliksi,kamēr tiksi galā :) http://ha.ckers.org/xss.html Link to comment Share on other sites More sharing options...
andrisp Posted September 30, 2008 Report Share Posted September 30, 2008 NoOne, tieši tāpēc jau arī tev ieteicu to purifieru ;) Link to comment Share on other sites More sharing options...
Recommended Posts