دالة لحماية التعليقات والمواضيع
السلام عليكم
هل ترون أن هذه الدالة صالحة لحماية التعليقات والمواضيع يعني أريدأن أفتح مجال اضافة المواضيع والتعليقات باستخدام وسوم html function indexOf($txt,$find,$word=false,$case=false){ $pos=stripos($txt,$find); $get=(is_int($pos)?$pos:-1); if($word){ $sub=substr($txt,$get,strlen($find)); return ($case?strtolower($sub):$sub); } else{ return $get; } } function convertTags($text,$arrows=false){ $badCode=array( "union","script","drop","mysql","group","limit","join","from","where","like","into", "javascript","escape(",".createElement",".child","frame","document.","window.",".location", ".cookie",".statusbar","setTimeout(","setInterval(",".createAttribute(","form","referrer", "URLUnencoded","history.","version","datebase","delete","insert","event","Array","meta" ); $badCode2=array( "onabort","onactivate","onafterprint","onafterupdate","onbeforeactivate","onbeforecopy","onbeforecut", "onbeforedeactivate","onbeforeeditfocus","onbeforepaste","onbeforeprint","onbeforeunload", "onbeforeupdate","onbounce","oncellchange","onchange","onclick","onclose","oncontextmenu", "oncontrolselect","oncopy","oncut","ondataavailable","ondatasetchanged","ondatasetcomplete","ondblclick", "ondeactivate","ondragdrop","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrag", "ondrop","onerror","onerrorupdate","onfilterchange","onfinish","onfocus","onfocusin","onfocusout", "onhelp","onkeydown","onkeypress","onkeyup","onlayoutcomplete","onloadonlosecapture","onmousedown", "onmouseenter","onmouseleave","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel", "onmove","onmoveend","onmovestart","onpaste","onpropertychange","onreadystatechange","onreset", "onresize","onresizeend","onresizestartonrowenter","onrowexit","onrowsdelete","onrowsinserted", "onscroll","onselect","onselectionchange","onselectstart","onstart","onstop","onsubmit","onunload", "onblur" ); for($x=0;$x<count($badCode);$x++){ if(indexOf($text,$badCode[$x])>=0){ $word=indexOf($text,$badCode[$x],true); $text=str_replace($word,'<d>'.$word.'</d>',$text); } } for($x=0;$x<count($badCode2);$x++){ if(indexOf($text,$badCode2[$x])>=0){ $word=indexOf($text,$badCode2[$x],true); $text=str_replace($word,'NOOP',$text); } } if($arrows){ $text=str_replace('<','>',$text); $text=str_replace('>','<',$text); } return $text; }طريقة الاستعمال convertTags($_POST['message']);
3 إجابات
يمكنك استعمال محرر bbcode وتمرير النص الى دالة htmlspecialchars ثم تنفيذ الكود الذي يقوم بتحويل ال bbcode الى html بهذه الطريقة تستطيع حماية الموضوع من اي اكواد خطرة
بواسطة: Amer 0 من 0 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا نعم هذاا ما قمت بعمله وما هو السبب ؟ لأن الأكواد التي سيكون دالخلها سيتم حدفها عن طريق strip_tags htmlspecailchars لا تحذف الرمز بل تحوله الى unicode نعم قمت بتغيير strip_tags الى htmlspecialchars ونجح الأمر لكن خشيت على أن تكون هذه الأخيرة غير كافية htmlspecialchars يقوم عملها على تحويل ">" الى رمز يونيكود لا فائدة منه وبالتالي فهي تعطل كافة اكواد html الموجودة وبدون html فلن تعمل الجافا سكربت او غيرها
هذه الدالة المعتمدة على الـHTMLPurifier
function safehtml($srt){ require_once '/path/to/htmlpurifier/library/HTMLPurifier.auto.php'; $config = HTMLPurifier_Config::createDefault(); $purifier = new HTMLPurifier($config); return $purifier->purify($srt); }وتستعمل اعدادته الافتراضيه ان كنت تريد عمل شىء اخر اخبرنى ماهو لكى اضيفه فى الاعدادات كدة بيعمل حماية كاملة بس مش بيمنع اى عناصر بواسطة: molhm 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا هذا يعني أنه لم يتم منع الأكواد الضارة أنا فقط اريد تفعيل اضافة الصور والروابط تلوين النص والتحكم فيه وتوسيط العناصر وأيضا أريد عمل تلوين للأكواد عن طريق jquery highlight انت بتطبق دالة الحماية فى اى مرحلة؟ عند الاضافة ولا عند العرض ولا عند التحويل أنا في الغالب أطبقها عند الادخال أما الاستخراج فلا ألتفت له عادة لا الحماية تكون عند الادخال وجدت درسا بالروسية لم أفهم منه شئ :'( دالة الاخ ملهم كافية للحماية وان اردت تحديد العناصر مثل لا يقبل روابط او اى شىء كهذا .. يمكنك عملها بكل سهولة بالاعدادات أضن أنه انت الدي تستطيع أن تعملها بكل سهولة لأنك جربت التعامل معها سابقا
فى كل الاحول مفيش حل كامل غير الـhtmlpurifier اقرأ هذه المقالة "حقائق يجب عليك أن تعلم بها عن دالة strip_tags"
الدالة التى وضعتها انت قد تكون جيدة فى الحماية ولكنى لا اظنها انها ستعمل مع <div style="width:expression(document.body.clientWidth > 800? "800px": "auto" ); ">النص هنا</div> بواسطة: MacOS 1 من 1 أشخاص وجدو هذه الاجابة مفيدة. هل وجدتها؟ نعم لا صراحة لم أعرف طريقة استخدام htmlpurifier |