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

php 특수문자 정규식을 이용해서 <- 클릭

이름, 주민등록번호, 아이디, 비밀번호, 생년월일, 휴대전화번호, 필명(닉네임) 등을 확인한다.

 

// alert 창
function Alert($msg)

{
 echo "<script language='javascript' type='text/javascript'>alert('".$msg."');</script>";
 exit;
}

 

$userid = '아이디';

$nick = '별명';

$passwd = '비밀번호';

$name = '이름';

$birthday = '생년월일';

$phone = '휴대전화번호';

$email = '이메일주소';

$addr = '주소';

 

$msg_cancel = '잘못된 정보입니다.';

 

// 아이디
if(!rtnSpecialCharCheck($userid))
{
 Alert($msg_cancel);
 exit;
}

// 필명
if(!rtnSpecialCharCheck($nick))
{
 Alert($msg_cancel);
 exit;
}

// 비밀번호
if(!rtnSpecialCharCheck($passwd))
{
 Alert($msg_cancel);
 exit;
}

// 이름
if(!rtnSpecialCharCheck($name))
{
 Alert($msg_cancel);
 exit;
}

// 생년월일
if(!rtnSpecialCharCheck($birthday))
{
 Alert($msg_cancel);
 exit;
}

// 휴대전화
if(!rtnSpecialCharCheck(str_replace("-","",$phone)))
{
 Alert($msg_cancel);
 exit;
}

// 이메일
if(!rtnSpecialCharCheck(str_replace("@","",str_replace("-","",str_replace("_","",str_replace(".","",$email))))))
{
 Alert($msg_cancel);
 exit;
}

// 주소
if($addr && !rtnSpecialCharCheck(str_replace(" ","",str_replace("-","",str_replace("_","",str_replace("(","",str_replace(")","",$addr)))))))
{
 Alert($msg_cancel);
 exit;

더보기>

자바스크립트 정규식을 이용해서 이메일을 확인할 수 있다. <- 클릭

Posted by 은둔고수
프로그램/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 은둔고수