لديك حساب بالفعل؟ دخول
دخول  سجل الأن 
دالة لحماية التعليقات والمواضيع
السلام عليكم
هل ترون أن هذه الدالة صالحة لحماية التعليقات والمواضيع
يعني أريدأن أفتح مجال اضافة المواضيع والتعليقات باستخدام وسوم 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('<','&gt;',$text);
			$text=str_replace('>','&lt;',$text);
		}
		return $text;
	}

طريقة الاستعمال
convertTags($_POST['message']);
تاريخ البداية: 4 / يونيو / 2012 الساعة 12:53 اخر نشاط: 6 / يونيو / 2012 الساعة 8:40 1
3 إجابات
يمكنك استعمال محرر bbcode وتمرير النص الى دالة htmlspecialchars ثم تنفيذ الكود الذي يقوم بتحويل ال bbcode الى html بهذه الطريقة تستطيع حماية الموضوع من اي اكواد خطرة

بواسطة: Amer
منذ: 5 / يونيو / 2012 الساعة 14:28

نعم هذاا ما قمت بعمله
لكن لن تشتغل معي jquery highlight
5 / يونيو / 2012 الساعة 14:44

وما هو السبب ؟

اذا استخدمت ال REGEX فستعمل
5 / يونيو / 2012 الساعة 14:52

لأن الأكواد التي سيكون دالخلها سيتم حدفها عن طريق strip_tags
5 / يونيو / 2012 الساعة 15:19

htmlspecailchars لا تحذف الرمز بل تحوله الى unicode

فلا يعود له فاعلية ولكنها لا تحذفه
5 / يونيو / 2012 الساعة 21:45

نعم قمت بتغيير strip_tags الى htmlspecialchars ونجح الأمر لكن خشيت على أن تكون هذه الأخيرة غير كافية
5 / يونيو / 2012 الساعة 22:5

htmlspecialchars يقوم عملها على تحويل ">" الى رمز يونيكود لا فائدة منه وبالتالي فهي تعطل كافة اكواد html الموجودة وبدون html فلن تعمل الجافا سكربت او غيرها
6 / يونيو / 2012 الساعة 8:40

هذه الدالة المعتمدة على الـ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
منذ: 4 / يونيو / 2012 الساعة 13:34

هذا يعني أنه لم يتم منع الأكواد الضارة
يعني متلا ان تم عمل اكواد لسحب الكوكيز أو أكواد تخريبية تمكن من الوصول الى معلومات السيرفر أو المدير
4 / يونيو / 2012 الساعة 13:39

أنا فقط اريد تفعيل اضافة الصور والروابط تلوين النص والتحكم فيه وتوسيط العناصر وأيضا أريد عمل تلوين للأكواد عن طريق jquery highlight
هذا كل ما أريده يعني متل فورم التعليقات الموجود هنا بالموقع
4 / يونيو / 2012 الساعة 13:42

انت بتطبق دالة الحماية فى اى مرحلة؟ عند الاضافة ولا عند العرض ولا عند التحويل
4 / يونيو / 2012 الساعة 19:59

أنا في الغالب أطبقها عند الادخال أما الاستخراج فلا ألتفت له عادة
هل هذا خطا ؟
يعني هل أقوم بالادخال دون حماية تم أحاول الحماية عند الاستخراج !!
4 / يونيو / 2012 الساعة 20:14

لا الحماية تكون عند الادخال
5 / يونيو / 2012 الساعة 0:10

وجدت درسا بالروسية لم أفهم منه شئ :'(
http://www.youtube.com/watch?v=xRllGAivgjA
للأسف أضن أنه لا توجد مساعدة لحل هذا المشل
حماية التعليقات هي أهم شئ في برمجة السكريبت
سأحاول أن أبحت عن دروس أجنبية لذلك
5 / يونيو / 2012 الساعة 8:54

دالة الاخ ملهم كافية للحماية وان اردت تحديد العناصر مثل لا يقبل روابط او اى شىء كهذا .. يمكنك عملها بكل سهولة بالاعدادات
5 / يونيو / 2012 الساعة 10:26

أضن أنه انت الدي تستطيع أن تعملها بكل سهولة لأنك جربت التعامل معها سابقا
اما بالنسبة لي فلا أعرف عنها شئ ان شاء الله أحاول الدخول للموقع الخاص بها واحاول ترجمة الكلام الانجليزي الى عربي عن طريق google لكي أفهم طريقة التعامل معها ^^
5 / يونيو / 2012 الساعة 11:3

فى كل الاحول مفيش حل كامل غير الـhtmlpurifier اقرأ هذه المقالة "حقائق يجب عليك أن تعلم بها عن دالة strip_tags"

الدالة التى وضعتها انت قد تكون جيدة فى الحماية ولكنى لا اظنها انها ستعمل مع
<div style="width:expression(document.body.clientWidth > 800? "800px": "auto" );
">النص هنا</div>

بواسطة: MacOS
منذ: 4 / يونيو / 2012 الساعة 13:5

صراحة لم أعرف طريقة استخدام htmlpurifier
و strip_tags لا تفي بالغرض
ممكن تساعدنا بشئ واضح ومكمول يعني متل دالة أو شرح طريقة استعمال htmlpurifier بالتفصيل
فكما ترى فان طلب تفعيل html في اضافة التعليقات مطلوب بكثرة
لدلك أرجو منك أن تظع لنا شرح لتفعيلها مع التشديد على الحماية
أتمنى دلك في أقرب وقت
4 / يونيو / 2012 الساعة 13:23

أنشر اجابتك

xهل تريد الاجابة عن هذا السؤال؟ من فضلك سجل دخول او اشترك لتتمكن من الاجابة