شوّيت: شبكة كرة قدم اجتماعية




العودة   سوالف سوفت > سوالف برمجة المواقع وتطويرها > PHP
التسجيل المدوّنات البحث مشاركات اليوم جعل الأقسام مقروءة

الرد على الموضوع
 
LinkBack أدوات الموضوع
Banned
#1  
Post كيفية إستعمال دالة ()htmlentities + استفسار

أولا أبرمج في سكريبت و حتى يتم حماية الثغرات يلجأ البعض إلى منع مثل هذه الكلمات

كود PHP:
javascript java meta script.... 


و لكن أنا لا أريد منعها أو تعويضها بكلمات أخرى, أنا أريد أنه عند استعمالها في مواضيع السكريبت لا تشتغل , و فكرت في استعمال دالة ()htmlentities فهل هي جيدة في هذا و هل هناك حلول أخرى تنصحونني بها






soptimes.com is offline   قديم 24-06-2010, 10:09 PM
الرد مع إقتباس
عضو سوبر نشيط
#2  

نعم الدالة اللي انت ذكرتها جميلة جدا في الحماية من اكواد الهتمل والجافاسكربت

لأنه تقوم بطباعة الاكواد التي توضع ككلام عادي كانك كتبت اسمك

تحياتي لك






__________________
زورونا في موقع الحياة للنقاشات والأسئلة والأجوبة :
- php >> وهو لحل مشاكل php وما حولها
- Ideas >> وهو لعرض الأفكار وتقييمها وايضا لمناقشة الأفكار
عبدالله أبولبن is offline   قديم 24-06-2010, 11:08 PM
الرد مع إقتباس
Banned
#3  

نعم أعلم, لكن هل يمكنني تخصيص الدالة فقط في كلمات و أكواد معينة و ليس في كافة الموضوع
لأنني لا أريد استعمال الدالة و خصوصاً في نصوص عربية لأنها تحول كل حرف عربي إلى 4 رموز و بالتالي
ستتضاعف كمية البيانات المخزنة إلى 4 أضعاف.






soptimes.com is offline   قديم 25-06-2010, 01:59 AM
الرد مع إقتباس
عضو سوبر نشيط
#4  

يمكنك ذلك بالتعابيير القياسية وللأسف لا اعرف عنها اي شيء للان

تحياتي لك






__________________
زورونا في موقع الحياة للنقاشات والأسئلة والأجوبة :
- php >> وهو لحل مشاكل php وما حولها
- Ideas >> وهو لعرض الأفكار وتقييمها وايضا لمناقشة الأفكار
عبدالله أبولبن is offline   قديم 25-06-2010, 03:58 AM
الرد مع إقتباس
Banned
#5  

مشكور وبانتضار الخبراء






soptimes.com is offline   قديم 25-06-2010, 03:12 PM
الرد مع إقتباس
عضو نشيط
#6  

الحل الي يحضرني الآن هو التعبير المنتظم:

كود PHP:
$stringAfterFilter=preg_replace("/(script|meta|alert|stylesheet|iframe|document|http-equiv)/i","*******",$yourString); 
بالرغم انه قد يسبب حمل ع السيرفر.
لكن اذا كان السكربت شخصي لموقعك وليس للبيع فالأفضل أن عملية الفلترة تتم على مستوى الويب سيرفر باستخدام مود سكيورتي.

وفقك الله






__________________
مجتمع حرس الأمني في خدمة الجميع
أبونجم is offline   قديم 25-06-2010, 05:23 PM
الرد مع إقتباس
Banned
#7  

أنت تقصد بتعويض الكلمات برموز, و لكن هذا نفس ما فعلته للحماية
و لكن في السكريبت يحتاج الزوار و الأعضاء إلى كتابة كودات مثل جافا و ميتا و لهذا
لا أريد منعها أريد فقط جعلها دون تنشيط و وجدت هذه الدالة ()htmlentities
لكن لم أعرف كيف أجعلها تخصص للعمل فقط مع تلك الأكواد الخبيثة و ليس النص بأكمله, لأنه عند اشتغالها في النص بأكمله ستقوم بتحول حرف من اللغة العربية لأربع رموز و هذا سيجعل تضاعف البيانات.






soptimes.com is offline   قديم 25-06-2010, 11:38 PM
الرد مع إقتباس
عضو جديد
#8  

جرب هذه الطريقة يمكن تنفع معاك

كود PHP:
<?php 
$tag   
= array('<script','<meta','<base'); 
$replace = array('&lt;script','&lt;meta','&lt;meta'); 
$text    '<script><base href="http://www.swalif.net/softs/" />  '
$text    str_ireplace($tag,$replace,$text); 
echo 
$text
?>
طبعاً هي دالة استبدال النصوص ولكن باستخدام مصفوفتين
واحدة فيها النصوص اللي تبي تستبدلها والمصفوفة الثانية النصوص اللي تبيها تظهر

طبعا الدالة لا تفرق معها الاحرف كبيرة أو صغير طبعاً نضع بدل بداية الوسم وهو < الرمز التالي &lt;

ولكن لاتعمل الا على php5 على حسب علمي






محمد عقيلي is offline   قديم 26-06-2010, 12:34 AM
الرد مع إقتباس
عضو نشيط
#9  

إقتباس:
المشاركة الأصلية بواسطة soptimes.com مشاهدة مشاركة
أنت تقصد بتعويض الكلمات برموز, و لكن هذا نفس ما فعلته للحماية
و لكن في السكريبت يحتاج الزوار و الأعضاء إلى كتابة كودات مثل جافا و ميتا و لهذا
لا أريد منعها أريد فقط جعلها دون تنشيط و وجدت هذه الدالة ()htmlentities
لكن لم أعرف كيف أجعلها تخصص للعمل فقط مع تلك الأكواد الخبيثة و ليس النص بأكمله, لأنه عند اشتغالها في النص بأكمله ستقوم بتحول حرف من اللغة العربية لأربع رموز و هذا سيجعل تضاعف البيانات.
المعذرة تسرعت.

يكفي لك ان تعطل وسم الفتح والاغلاق ليتعطل تنفيذ الكود, جرب :
كود PHP:
$regex[0]="/</";
$regex[1]="/>/";
$replacement[0]="&lt;";
$replacement[1]="&gt;";
    
$theText=preg_replace($regex,$replacement,$theText); 






__________________
مجتمع حرس الأمني في خدمة الجميع
أبونجم is offline   قديم 26-06-2010, 12:56 AM
الرد مع إقتباس
Banned
#10  

مشكورين أخوي, و لكن عند الظهور هل سيظهر الكود عادي و هل هناك إمكانية لإستخدام دالة htmlentities
فقط على أكواد المدمرة التي تدخل للقاعدة و ليس على النص كاملا.







آخر تعديل بواسطة soptimes.com في 26-06-2010 الساعة 02:42 PM.
soptimes.com is offline   قديم 26-06-2010, 02:40 PM
الرد مع إقتباس
Banned
#11  
Cool

مشكورين جميعاً على مساعداتكم
أنا وصلت إلى هذه النتيجة

كود PHP:
 $tag   = array('<script','<meta','<base','/</','/>/'); 
    
$replace = array('&lt;script','&lt;meta','&lt;base','&lt;','&gt;'); 
    
$message    str_ireplace($tag,$replace,$message); 
و نجحت معي, لكن هل هذا كافي للحماية و هل هناك أي نقص في الحماية, لأنني أخاف أن يتم تجاوز هذا الإستعلام باستخدام أكواد أخرى






soptimes.com is offline   قديم 27-06-2010, 05:49 AM
الرد مع إقتباس
عضو نشيط
#12  

إقتباس:
المشاركة الأصلية بواسطة soptimes.com مشاهدة مشاركة
مشكورين جميعاً على مساعداتكم
أنا وصلت إلى هذه النتيجة

كود PHP:
 $tag   = array('<script','<meta','<base','/</','/>/'); 
    
$replace = array('&lt;script','&lt;meta','&lt;base','&lt;','&gt;'); 
    
$message    str_ireplace($tag,$replace,$message); 
و نجحت معي, لكن هل هذا كافي للحماية و هل هناك أي نقص في الحماية, لأنني أخاف أن يتم تجاوز هذا الإستعلام باستخدام أكواد أخرى
انا فقط كتبت ما طلبته من حل, اما اذا جينا ع الحماية (واظنك قصدت بالتحديد xss) فكل ما كتب هنا لا يقدم المستوى المطلوب في الحماية

1- انت ذكرت ثلاث تعليمات '<script','<meta','<base', اقدر اتخطاك مثلا بهذه:
<img src=x onerror=alert(/xss hacking/) />
-اي وسم html + event كافي لتنفيذ الثغرة

2- حمايتك على كود الفتح, اقدر اتخطاك بكود الاغلاق:
</br<img src=x onerror=alert(/xss hacking/)//>

3- بالرغم ان ترميز <> كافي لحماية جيدة لكن نقدر نتخطاها بهذه :
" onevent=alert(/xss hacking/) x="

htmlentities كفيل باول حالتين, وفي ردي السابق بديل عنها وجيدة لمشكلتك

موفق






__________________
مجتمع حرس الأمني في خدمة الجميع
أبونجم is offline   قديم 27-06-2010, 08:45 AM
الرد مع إقتباس
عضو جديد
#13  

إذا تبي نصيحة لحماية النصوص استخدم bbcode وعطل جميع اكواد html باستخدام htmlspecialchars







آخر تعديل بواسطة محمد عقيلي في 27-06-2010 الساعة 12:34 PM.
محمد عقيلي is offline   قديم 27-06-2010, 12:27 PM
الرد مع إقتباس
Banned
#14  
Unhappy

إقتباس:
المشاركة الأصلية بواسطة أبونجم مشاهدة مشاركة
انا فقط كتبت ما طلبته من حل, اما اذا جينا ع الحماية (واظنك قصدت بالتحديد xss) فكل ما كتب هنا لا يقدم المستوى المطلوب في الحماية

1- انت ذكرت ثلاث تعليمات '<script','<meta','<base', اقدر اتخطاك مثلا بهذه:
<img src=x onerror=alert(/xss hacking/) />
-اي وسم html + event كافي لتنفيذ الثغرة

2- حمايتك على كود الفتح, اقدر اتخطاك بكود الاغلاق:
</br<img src=x onerror=alert(/xss hacking/)//>

3- بالرغم ان ترميز <> كافي لحماية جيدة لكن نقدر نتخطاها بهذه :
" onevent=alert(/xss hacking/) x="

htmlentities كفيل باول حالتين, وفي ردي السابق بديل عنها وجيدة لمشكلتك

موفق

أنا استعملت ما ذكرته باستعمالي لوسمي الإغلاق و الفتح و كذلك إستعملت الميتا أنظر هنا

كود PHP:
$tag   = array('<script','<meta','<base','/</','/>/'); 
    
$replace = array('&lt;script','&lt;meta','&lt;base','&lt;','&gt;'); 
    
$message    str_ireplace($tag,$replace,$message); 
أنا أعرف أن htmlentities هو الحل الجيد و لكن المشكل الذي يوجد به أنه تلك الدالة تحول اللغة العربية كل حرف ب 4 رموز و تصور معي كم ستصبح قاعدة البيانات كبيرة, لذلك استعملت الحل الذي أعطيتني و ها أنت تقول أنه غي كافي. أتمنى أن تبحث معي عن دالة تكون الحل النهائي و جزاك الله خيراً فأنا جربت ألف طريقة و لحد الساعة لم أجد حل سوى الرجوع للحل التقليدي و منع جميع الكلمات الضارة و تعويضها برموز و هذا هو الذي لا أريده.

و بالنسبة لإستخدام bbcode يلزمني محرر جيد لهذا الغرض فأنا أستعمل محرر html






soptimes.com is offline   قديم 27-06-2010, 02:12 PM
الرد مع إقتباس
Banned
#15  

هل يمكن حل المشكل بتعويض " ب &quot;






soptimes.com is offline   قديم 27-06-2010, 02:17 PM
الرد مع إقتباس
عضو نشيط
#16  

السلام عليكم

هناك داله ستوفر عليك الكثير وهى

strip_tags

هذه الداله تقوم بالاتاحه لعرض تاجات معينه والباقى

يتم تجاهله

http://www.php.net/manual/en/function.strip-tags.php

وهذا لينك لطريقة استخدامها

يمكن عمل مثل هذه الوظيفه عن طريق التعابير القياسيه

ولكن هذه الداله اعتقد انها جيده






__________________
Mahmoud Abd El-Hamed
Web Developer
Mobile: +2 0192565454
E-mail: admin(at)developspot.com
Site: http://developspot.com

آخر تعديل بواسطة developspot في 27-06-2010 الساعة 05:58 PM.
developspot is offline   قديم 27-06-2010, 05:32 PM
الرد مع إقتباس
Banned
#17  
Exclamation

هذا الحل ليس جيد بالنسبة لي.

و لكن هل هناك إمكانية لتقوية الكود الذي نجح معي
و تعويض هذه الكلمات برموز حتى لا تتفعل و تظهر طبيعية


كود:
 
'cookie','JAVA','java','location','document','window','onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload','javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'script', 'embed', 'object', 'iframe','frame', 'frameset', 'ilayer', 'bgsound','base', 'union', 'UNION', 'select', 'SELECT', 'mysql', 'MYSQL', 'shell', 'SHELL', 'Refresh', 'content'






soptimes.com is offline   قديم 27-06-2010, 06:22 PM
الرد مع إقتباس
عضو نشيط
#18  

كنت اود الاضافه فقط

كنت اامل فى ان تفيدك فيما تريد

اذا اردت استبدال هذه الكلمات بغيرها يمكن ذلك عن طريق التعابير القياسيه

بدالة

preg_replace

وهذا اللينك يشرح استخدامها

http://www.php.net/manual/en/function.preg-replace.php

والباتيرن المستخدم هو

preg_replace('/[(cookie)(java)(document)(window)]/i','',$variable);


وهكذا يمكن اضافة كلمات اخرى عن طريق

كود PHP:
preg_replace('/[(cookie)(java)(document)(window)(onabort)]/i','',$variable); 

ولكن بما ان الكلمات سابته يفضل استخدام دالة

str_replace

وهذا رابط الشرح

http://www.php.net/manual/en/function.str-replace.php

ويفضل وضعهم جميعا فى مصفوفه

مثال
كود PHP:
$words = array("cookie""java""document""window");
$safe str_replace($words"""your html text"); 
ارجو الافاده






__________________
Mahmoud Abd El-Hamed
Web Developer
Mobile: +2 0192565454
E-mail: admin(at)developspot.com
Site: http://developspot.com
developspot is offline   قديم 27-06-2010, 07:12 PM
الرد مع إقتباس
Banned
#19  
Unhappy

أنا استخدمت هذه

$tag = array('<script','<meta','<base','/</','/>/');
$replace = array('&lt;script','&lt;meta','&lt;base','&lt;','&gt;');
$message = str_ireplace($tag,$replace,$message);

و الذي ينقصني الآن هو إضافة كلمات أخرى لمنع ثغرة xss






soptimes.com is offline   قديم 27-06-2010, 07:19 PM
الرد مع إقتباس
مشرف قسم PHP
#20  

ماذا عن htmlspecialchars() ؟






__________________
# للتواصل السريع (على ساحات) : http://www.sa7.at/ashraf
# اتبعني على Twitter
أشرف السمهوري is offline   قديم 27-06-2010, 07:35 PM
الرد مع إقتباس
عضو نشيط
#21  

كود PHP:
<?php

function CleanXSS($str){
    
// One of the easiest way to do XSS is to use one of the on* attributes, like onclick or onload.
    // With this you can easily execute a script, without the user even having to do something (with onload, etc)
    // or just having to click or hover over something. We just remove them all with
    
$str preg_replace('#(<[^>]+[\s\r\n\"\'])(on|xmlns)[^>]*>#iU',"$1>",$str);
    
    
// As you certainly know, can you use javascript: and vbscript: as protocol handlers instead of http:// and others.
    // Something like <a href="javascript:alert('foobar')">lll</a> executes just nicely if a user clicks on it.
    // We of course remove that as well. IE as also the strange behaviour that something like "java script :" is also valid,
    // so we have to check for a whitespace between every character.
    
$str preg_replace('#([a-z]*)[\x00-\x20]*=[\x00-\x20]*([\`\'\"]*)[\\x00-\x20]*j[\x00-\x20]*a[\x00-\x20]*v[\x00-\x20]*a[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iU','$1=$2nojavascript...',$str);
    
$str preg_replace('#([a-z]*)[\x00-\x20]*=([\'\"]*)[\x00-\x20]*v[\x00-\x20]*b[\x00-\x20]*s[\x00-\x20]*c[\x00-\x20]*r[\x00-\x20]*i[\x00-\x20]*p[\x00-\x20]*t[\x00-\x20]*:#iU','$1=$2novbscript...',$str);
    
    
// We removed all namespace declarations above, here we remove all elements, which have a prefix, they are not needed in HTML..
    
$str preg_replace('#</*\w+:\w[^>]*>#i','',$str);
    
    
// There are quite some elements in HTML, which you definitively don't want in something like user comments.
    // The reason for the while loop is, that stuff like
    // <sc<script>ript>alert('hello')
    // We remove them with:
    
do {
        
$oldstr $str;
        
$str preg_replace('#</*(\?xml|applet|meta|xml|blink|link|style|script|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>#i',"",$str);
    } while (
$oldstr != $str);
    
    return 
$str;


?>






__________________
Mahmoud Abd El-Hamed
Web Developer
Mobile: +2 0192565454
E-mail: admin(at)developspot.com
Site: http://developspot.com
developspot is offline   قديم 27-06-2010, 07:41 PM
الرد مع إقتباس
عضو نشيط
#22  

يمكن ايضا استخدام

DOMDocument






__________________
Mahmoud Abd El-Hamed
Web Developer
Mobile: +2 0192565454
E-mail: admin(at)developspot.com
Site: http://developspot.com
developspot is offline   قديم 27-06-2010, 08:04 PM
الرد مع إقتباس
Banned
#23  

عند استعمال الدالة التي وضعت لي هل ستظهر الأكواد طبيعية أم سيتم تعويضها برموز






soptimes.com is offline   قديم 27-06-2010, 08:17 PM
الرد مع إقتباس
Banned
#24  

وجدت هذه الدالة و لا أعرف هل هي مفيدة


كود PHP:
function check_text_replace($text){
 
$search = array (
   
'@<script[^>]*?>.*?</script>@si'// Supprime le javascript
   
'@<[\/\!]*?[^<>]*?>@si',          // Supprime les balises HTML
   
'@([\r\n])[\s]+@',                // Supprime les espaces
   
'@&(quot|#34);@i',                // Remplace les entités HTML
   
);
 
$replace = array (
   
'',
   
'',
   
'\1',
   
'"'
   
);
 
$text preg_replace($search$replace$text);
return(
$text);







soptimes.com is offline   قديم 27-06-2010, 08:19 PM
الرد مع إقتباس
الرد على الموضوع


 

أدوات الموضوع

قوانين المشاركات
لا يمكنك كتابة مواضيع جديدة
لا يمكنك إضافة ردود
لا يمكنك إرسال مرفقات
لا يمكنك تعديل مشاركاتك

كود vB متاح
كود [IMG] متاح
كود HTML غير متاح
Trackbacks are متاح
Pingbacks are متاح
Refbacks are متاح


المواضيع المشابهه
الموضوع كاتب الموضوع القسم الردود آخر مشاركة
كيفية إستعمال دالة في ترجع html و php sawaz.uni.cc PHP 4 18-12-2009 06:00 PM
كيفية تطبيق اكثر من دالة علي متغير TlT PHP 0 06-06-2008 07:31 PM
استفسار حول دالة mysql_query() azizsoft PHP 2 12-10-2007 11:53 PM
ما الفرق بين htmlspecialchars و htmlentities ؟؟ Colombo PHP 8 06-09-2006 12:13 PM
الدرس الأول : كيفية صنع دالة خاصة بك .. Mr.Muslem PHP 13 16-11-2002 03:50 AM


جميع الأوقات بتوقيت غرينتش +3. الوقت الآن هو 08:32 AM.