PHP

XSS 공격 방지 함수

은둔한량 2013. 2. 18. 16:44
반응형

/* XSS 공격 방지 함수 */
function hasJsInUrl($arr)
{
 foreach ($arr as $k => $v) {
  if (false !== strpos(strtolower(substr($v, 4)), 'script')) {
   echo "\n";
   exit;
  }
 }
} //end func

hasJsInUrl(&$_REQUEST); 

function hasCookieAttackStr() {
 foreach ($_SESSION as $k => $v) {
  if (is_array($v)) {
   $rst = arrayHasAttackStr($v);
  } else {
   $rst = hasAttackStr($v);
  }
  if ($rst) {
   return true;
  }
 }
 return false;
} //end func
function arrayHasAttackStr($arr) {
 $len = count($arr);
 for ($i=0; $i<$len; ++$i) {
  if (hasAttackStr($arr[$i])) {
   return true;
  }
 }  //end for
 return false;
} //end func

function hasAttackStr($str, $isVarText = false) {
 if (empty($str)) {
  return false;
 }
 if (!$isVarText) {
  $arr = array("'", ';');
 } else {
  $arr = array("'");
 }

 $arr2 = array(
  '--',
 );
 $len = strlen($str);
 for ($i=0; $i<$len; ++$i) {
  if (in_array($str[$i], $arr)) {
   return true;
  }
 }  //end for

 $len = count($arr2);
 for ($i=0; $i<$len; ++$i) {
  $pos = strpos($str, $arr2[$i]);
  if ($pos !== false) {
   return true;
  }
 }  //end for
 return false;
} //end func

반응형