/* 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
'PHP' 카테고리의 다른 글
영문 단어의 첫번째 글자 대문자로 (영어 이름) (0) | 2013.02.19 |
---|---|
브라우져와 OS 알아내는 함수 (0) | 2013.02.18 |
파일 사이즈를 Byte별로 구분해주는 함수 (0) | 2013.02.18 |
PHP 날짜 함수 정리 (0) | 2013.02.18 |
엑셀로 보낼때 숫자 인식하도록 하기 (0) | 2013.02.18 |