프로그램/php2013. 1. 30. 10:31

SQL Injection 해킹에 대한 보안 방지를 위한 php 정규식이다.

// 확인 : PHP SQL Injection 보안
// 설명 : 특수문자를 체크해서 있다면 false 반환, 없으면 true
function rtnSpecialCharCheck($str)
{
 if(preg_match("/[#\&\\+\-%@=\/\\\:;,\.\'\"\^`~\_|\!\/\?\*$#<>()\[\]\{\}]/i", $str,  $match))
 {
  return false;
 }

 return true;
}

 

// 이름

$name = '홍길동';
if(!rtnSpecialCharCheck($name))
{
 echo "<script>alert ('잘못된 정보입니다.');</script>";
 exit;
}

 

// 주민등록번호

$jumin = '9101011234564';

if(!rtnSpecialCharCheck($jumin))
{
 echo "<script>alert ('잘못된 정보입니다.');</script>";
 exit;
}

 

위 소스 내용을 토대로 다른 특수문자와 관련한 정규 표현식을 이용해서 응용할 수 있다. <- 클릭

 

php.ini 파일 설정 magic_quotes_gpc = On을 이용하는 방법 <- 클릭

Posted by 은둔고수
프로그램/php2012. 2. 27. 15:39


php를 설치한 후 php.ini 파일을 열어보고 magic_quotes_gpc 설정이 On으로 되어있다면
sql 인젝션 공격에 대한 대비가 어느정도 되어있다고 할 수 있다.

 

[php.ini] 소스 내용 중 magic_quotes_gpc 부분

; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = On


하지만 이 설정을 사용하지 않는다면 php에서 sql injection 공격을 방지할 수 있는 처리를 해야 한다.


// sql injection 처리
function chk_sqlinjection()
{
 if(!get_magic_quotes_gpc())
 {
  foreach($_POST as $k => $v)
  {
    $_POST[$k] = addslashes($v);
  }

  foreach($_GET as $k => $v)
  {
    $_GET[$k] = addslashes($v);
  }

  foreach($_SERVER as $k => $v)
  {
    $_SERVER[$k] = addslashes($v);
  }

  foreach($_COOKIE as $k => $v)
  {
    $_COOKIE[$k] = addslashes($v);
  }
 }
}

 

참고>

php 5.3 부터는 배제가 되며 php 6.0 이후부터는 magic_quotes_gpc가 아예 제거된다고 한다.

Posted by 은둔고수