الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مارأيكم بكلاس الحماية هذا

بدأه f8athy في 1 أغسطس 2009 · 2 رد · 324 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه ،،

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

<?

class Anti_hacker
{
    function RemoveXSS($val)
     {
           // remove all non-printable characters. CR(0a) and LF(0b) and TAB(9) are allowed
           // this prevents some character re-spacing such as <java\0script>
           // note that you have to handle splits with \n, \r, and \t later since they *are*
           //                 allowed in some inputs

           $val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\x20])/', '', $val);

           // straight replacements, the user should never need these since they're normal characters
           // this prevents like <IMG SRC=@avascript:alert('XSS')>

           $search = 'abcdefghijklmnopqrstuvwxyz';
           $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
           $search .= '1234567890!@#$%^&*()';
           $search .= '~`";:?+/={}[]-_|\'\\';

           for ($i = 0; $i < strlen($search); $i++)
           {
              // ;? matches the ;, which is optional
              // 0{0,7} matches any padded zeros, which are optional and go up to 8 chars

              // @ @ search for the hex values

              $val = preg_replace('/([x|X]0{0,8}'.dechex(ord($search[$i])).';?)/i',
                                                               $search[$i], $val); // with a ;

              // @ @ 0{0,7} matches '0' zero to seven times
              $val = preg_replace('/({0,8}'.ord($search[$i]).';?)/', $search[$i], $val);
              // with a ;
           }

           // now the only remaining whitespace attacks are \t, \n, and \r
           $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
           $ra2 = Array('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');
           $ra = array_merge($ra1, $ra2);

           $found = true; // keep replacing as long as the previous round replaced something
           while ($found == true)
           {
              $val_before = $val;
              for ($i = 0; $i < sizeof($ra); $i++)
              {
                 $pattern = '/';
                 for ($j = 0; $j < strlen($ra[$i]); $j++)
                 {
                    if ($j > 0)
                    {
                       $pattern .= '(';
                       $pattern .= '([x|X]0{0,8}([9][a]);?)?';
                       $pattern .= '|({0,8}([9][10][13]);?)?';
                       $pattern .= ')?';
                    }
                    $pattern .= $ra[$i][$j];
                 }
                 $pattern .= '/i';
                 $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2); // add in <> to nerf the tag
                 $val = preg_replace($pattern, $replacement, $val); // filter out the hex tags
                 if ($val_before == $val) {
                    // no replacements were made, so exit the loop
                    $found = false;
                 }
              }
           }

           return $val;
     }
    // those function By -> F8athy
    // thanks  for choose my script :D

     function _include($inc)
     {
       if(isset($inc))
       {
          include($inc);
       }
       else
       {
          die("محاولة غير شرعية");
       }

     }



          function  _GETsafe($var,$tvar)
     {
       $var = $this->RemoveXSS($_GET[$tvar]);
       If (!is_numeric($var))
       {


           foreach ($var as $xss_get)
            {
   		             if ((eregi("<[^>]*script*\"?[^>]*>", $xss_get)) or
       		             (eregi("<[^>]*object*\"?[^>]*>", $xss_get)) or
       		             (eregi("<[^>]*iframe*\"?[^>]*>", $xss_get)) or
       		             (eregi("<[^>]*applet*\"?[^>]*>", $xss_get)) or
       		             (eregi("<[^>]*meta*\"?[^>]*>", $xss_get))   or
       		             (eregi("<[^>]*style*\"?[^>]*>", $xss_get))  or
       		             (eregi("<[^>]*form*\"?[^>]*>", $xss_get)) 	 or
       		             (eregi("<[^>]*img*\"?[^>]*>", $xss_get)))
                     {
    			        die("محاولة غير شرعية تم تسجيل بيناتك وعرضها على القانون");
   			         }
  	        }

            $var == str_replace("\"", "\\\"", $var);
            $var = htmlentities($var);

             continue;

       }
       else
       {

              continue;

       }

     }
     function _input($input)
     {
         $reg = "(delete)|(update)|(union)|(insert)";
         $input = eregi_replace($reg, "", $input);
         return($input);
     }

     function _GET($var,$tvar)
     {
         $str = $this->_GETsafe($var,$tvar) ;
         $str =  htmlspecialchars(addslashes(trim($str)));
         return ($str);
     }





     /*******************************
     //  you can active this function
    //  disactivate xss

       $a99=$_SERVER["REQUEST_URI"] ;

      if (stristr($a99,"<"))
      {
         header("HTTP/1.1 404 Not Found");
      }
    *********************************/



}

أنا مبتدأ في الـ php

الرجاء تصحيح الكلاس إن كانت إن كانت هناك أخطاء

وهل هذا الكلاس كافي للحماية من حقن sql و xss

تم تعديل هذه المشاركة بواسطة f8athy في 1 أغسطس 2009 في 12:48

564x.jpg
#2

أعتقد الكلاس يعمل على إبطاء التصفح فكل متغير سيمر بمرحله طويله ليتم تنقيح البيانات منه ويستهلك الكثير من موارد السيرفر

هناك دوال تفي بالغرض وقد قمت بإستخدام بعضها مثل

htmlspecialchars(addslashes(

CMS Sfhati , Website Generator


نظام إدارة المحتوى صفحتي ... جربه الآن 


 


small-logo.png

#3
bastr3 كتب:
أعتقد الكلاس يعمل على إبطاء التصفح فكل متغير سيمر بمرحله طويله ليتم تنقيح البيانات منه ويستهلك الكثير من موارد السيرفر

هناك دوال تفي بالغرض وقد قمت بإستخدام بعضها مثل

htmlspecialchars(addslashes(

مارأيك أخي لو قمنا بالاختصار وجعلنا دالة واحدة بين RemoveXSS و _GETsafe و _input

أو اجعل ماعدا RemoveXSS

هل ستستهلك موارد السيرفر وهل تفي بالغرض

564x.jpg

مواضيع مشابهة