[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 2,634건 84 페이지
  • RSS
기술자료 목록
974
영카트   13421  2011-07-23 10:22  
973
영카트   14963  2011-07-23 10:20  
972
호스팅   14265  2011-07-05 17:42  
971
PHP   24766  2011-06-12 20:30 ~ 2024-02-28 09:43  
970
ClassicASP   23681  2011-06-11 22:02  
969
JavaScript   19544  2011-06-11 19:23 ~ 2011-06-12 00:00  
968
JavaScript   27032  2011-06-11 19:01  
967
그누보드   12758  2011-06-08 21:30  
966
일반   30051  2011-05-24 10:49  
965
etc쇼핑몰   25382  2011-05-20 22:07 ~ 2011-05-26 00:00  
964
PHP   29448  2011-04-20 19:59  
963
일반   22730  2011-04-05 11:28  
962
Adobe   22747  2011-03-27 22:09  
열람
PHP   22605  2011-03-27 21:51  
960
일반   29210  2011-03-13 05:50  
959
WindowsServer   42573  2011-03-05 12:02 ~ 2011-12-16 00:00  
958
PHP   19616  2011-02-24 16:10 ~ 2021-11-23 09:25  
957
일반   16650  2011-02-11 07:04  
956
그누보드   12426  2011-02-09 06:28  
955
영카트   15397  2011-02-09 06:15  

검색

해피정닷컴 정보

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

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