Daniel's Knowledge Storage

사용하시는 홈페이지를 방어하기위한 간단한 php (mysql)함수를 소개합니다. 본문

Develop/PHP

사용하시는 홈페이지를 방어하기위한 간단한 php (mysql)함수를 소개합니다.

다니엘SEO 2009. 6. 15. 02:23

웹사이트를 방어하기위한 간단한 php (mysql)함수를 소개합니다.

mysql_real_escape_string()

함수입니다.

get 으로 받건 post로 받건 request 로 받건 받으면서 이녀석으로 둘러싸줍시다 . 해커라고 설쳐대는 똥파리들의 침입을 막아줍니다. 부정침입자는 ip를 기록해뒀다가 사이버 수사대에 넘겨줍시다 .

단, 사용하면서 문제가 생길수있습니다.
줄바꿈 문자가 돌출됩니다.  같은 이유로 nl2br() 함수가 먹지않습니다. 
\r\n 이 -> \\r\\n (편의상 \를 w로 썼습니다.) 으로 치환되기 때문인데 ...이부분을 찾아서 br태그와 교환해주면 됩니다. 위지윅 이라면 줄바꿈에 <p> 태그가 들어가니까 신경 안써도 됩니다. 그냥  텍스트로 전송할 경우에만 해당되는 이야기 입니다.   

Examples

Example 1. Simple mysql_real_escape_string() example

<?php
// Connect
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
    OR die(
mysql_error());

// Query
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
            
mysql_real_escape_string($user),
            
mysql_real_escape_string($password));
?>

Example 2. An example SQL Injection Attack

<?php
// Query database to check if there are any matching users
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

// We didn't check $_POST['password'], it could be anything the user wanted! For example:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// This means the query sent to MySQL would be:
echo $query;
?> 

'Develop > PHP' 카테고리의 다른 글

php보안을 위안 30가지 방안  (0) 2009.06.15
넘겨 받은 값 일단 오염됐다고 보라 - PHP 보안  (0) 2009.06.15
클래스 사용 기본 활용 - DB컨넥트  (0) 2009.06.15
phpmyadmin 설치법  (0) 2008.07.06
php 함수목록  (0) 2008.02.25
Comments