[SQL Injection] SQL 인젝션 방어 함수, mysql_real_escape_string > 기술자료 | 해피정닷컴

[SQL Injection] SQL 인젝션 방어 함수, mysql_real_escape_string > 기술자료

본문 바로가기

사이트 내 전체검색

[SQL Injection] SQL 인젝션 방어 함수, mysql_real_escape_string > 기술자료

PHP [SQL Injection] SQL 인젝션 방어 함수, mysql_real_escape_string

페이지 정보


본문

php버전 : php 4.3.0 ~ PHP 5.x

SQL 인젝션 공격은 ID나 PASSWORD 입력칸에 SQL문을 넣어서 DB를 터는 것을 말한다.


SQL 인젝션 공격의 예
<?php
// 유저가 있는지 DB에서 체크하는 쿼리
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);
 
// $_POST['password']를 체크할 수 없게 되고, 어떤 유저든 허용하게 된다. 예를 들면:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";
 
// MySQL에 이런 쿼리가 전송된다는 것을 의미한다:
echo $query;
//SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''
?>


모범 예제
<?php
if (isset($_POST['product_name']) && isset($_POST['product_description']) && isset($_POST['user_id'])) {
    // 접속
    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');
     if(!is_resource($link)) {
         echo "서버 접속 실패\n";
        // ... 오류를 적절히 기록
     } else {
         // ON일 경우 magic_quotes_gpc/magic_quotes_sybase 효과 제거
         if(get_magic_quotes_gpc()) {
            $product_name        = stripslashes($_POST['product_name']);
            $product_description = stripslashes($_POST['product_description']);
        } else {
            $product_name        = $_POST['product_name'];
            $product_description = $_POST['product_description'];
        }
 
        // 안전한 질의 만들기
        $query = sprintf("INSERT INTO products (`name`, `description`, `user_id`) VALUES ('%s', '%s', %d)",
                    mysql_real_escape_string($product_name, $link),
                    mysql_real_escape_string($product_description, $link),
                    $_POST['user_id']);
         mysql_query($query, $link);
         if (mysql_affected_rows($link) > 0) {
            echo "Product inserted\n";
        }
    }
} else {
    echo "Fill the form property\n";
}
?>


참고자료
http://mytory.co.kr/archives/961
http://www.php.net/manual/kr/function.mysql-real-escape-string.php

댓글목록

등록된 댓글이 없습니다.


Total 195건 6 페이지
  • RSS
기술자료 목록
95
PHP   21856  2012-03-16 23:55 ~ 2014-12-28 00:00  
94
PHP   22934  2012-03-04 17:29  
93
PHP   21846  2012-03-04 17:09 ~ 2023-01-08 11:38  
92
PHP   27600  2012-03-01 21:47 ~ 2012-04-08 00:00  
91
PHP   15689  2012-02-11 08:05  
90
PHP   23707  2011-12-16 17:50 ~ 2017-12-01 23:10  
89
PHP   35548  2011-12-16 14:24  
88
PHP   14676  2011-12-16 11:56  
87
PHP   39986  2011-12-10 17:48 ~ 2011-12-17 00:00  
86
PHP   22284  2011-12-10 17:48  
85
PHP   18743  2011-11-28 08:46 ~ 2017-01-13 00:00  
84
PHP   15998  2011-08-15 20:08  
83
PHP   15459  2011-07-26 07:10  
82
PHP   24797  2011-06-12 20:30 ~ 2024-02-28 09:43  
81
PHP   29472  2011-04-20 19:59  
열람
PHP   22619  2011-03-27 21:51  
79
PHP   19642  2011-02-24 16:10 ~ 2021-11-23 09:25  
78
PHP   27869  2010-09-24 20:57  
77
PHP   17514  2010-08-25 11:34  
76
PHP   16143  2010-08-21 09:37 ~ 2014-10-06 00:00  

검색

해피정닷컴 정보

회사소개 회사연혁 협력사 오시는길 서비스 이용약관 개인정보 처리방침

회사명: 해피정닷컴   대표: 정창용   전화: 070-7600-3500   팩스: 042-670-8272
주소: (34368) 대전시 대덕구 대화로 160 대전산업용재유통단지 1동 222호
개인정보보호책임자: 정창용   사업자번호: 119-05-36414
통신판매업신고: 제2024-대전대덕-0405호 [사업자등록확인]  
Copyright 2001~2024 해피정닷컴. All Rights Reserved.