회원가입∴아이디/비번찾기
홈으로


php sql인젝션 공격막기
10년 전
Example#1 mysql_real_escape_string() 예제

<?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 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;
?>
MySQL로 전송되는 질의:

SELECT * FROM users WHERE name='aidan' AND password='' OR ''=''

    
유효한 비밀번호 없이 누구나 접속하여 접근이 가능하다.

Example#3 "Best Practice" 질의

mysql_real_escape_string()은 각 변수에 대해 SQL 인젝션을 방지한다. 이 예제는 Magic Quotes 설정과는 별개로 데이터베이스를 질의하는 "best practice" 방법을 시연한다.

<?php
// Quote variable to make safe
function quote_smart($value)
{
    // Stripslashes
    if (get_magic_quotes_gpc()) {
        $value = stripslashes($value);
    }
    // Quote if not integer
    if (!is_numeric($value)) {
        $value = "'" . mysql_real_escape_string($value) . "'";
    }
    return $value;
}

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

// Make a safe query
$query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
            quote_smart($_POST['username']),
            quote_smart($_POST['password']));

mysql_query($query);
?>
SQL 인젝션 공격이 동작하지 않으며 질의가 정확하게 실행될 것이다
추천추천 : 543 추천 목록
번호 제목
227
입력 필드에서 특정단어(예:#err)가 포함되었을 때 실시간 감지 및 경고창 띄우기
226
데이터베이스 최적화와 쿼리 효율성을 높이 검색 성능을 개선하는 방법
225
PHP의 php.ini 파일에서 설정할 수 있는 주요 항목들을 카테고리별로 정리
224
HTTPS로 접속한 사용자를 강제로 HTTP로 리디렉션 하려면
223
sessionStorage.getItem 와 sessionStorage.setItem
222
여러 도메인들 간 쿠키 공유하기
221
쿠키 생성,가져오기,삭제
220
curl 함수를 이용한 HTTP REFERER 변경
219
4기가 이상의 테이블을 만들고 싶다면(테이블의 AVG_ROW_LENGTH, MAX_ROWS)
218
[mySql] 다양한 db검색 스킬 총정리 (띄워쓰기 무시, 다중검색, 포함되는 단어 검색)
php sql인젝션 공격막기
216
[php] SQL 인젝션 공격
215
정규표현식 - 패턴 변경자
214
fopen 막혔을 때 fsocketopen 사용방법
213
PHP + MYSQL 연결 테스트 예제 (mysqli 클래스방식)
212
PHP + MYSQL 연결 테스트 예제 (pdo 방식)
211
PHP + MYSQL 연결 테스트 예제 (original)
210
DB 접근 및 쿼리문(insert,select,update,delete)
209
[MySQL] 필드에서 특정문자 포함 또는 제외한 DB 검색, LIKE ,NOT
208
SHOUTcast 를 이용한 인터넷 라이브 방송 시스템 구축
207
PHP 인젝션과 file get contents의 관계
206
DB 접근 및 쿼리문(insert,select,update,delete)
205
[MySQL] 필드에서 특정문자 포함 또는 제외한 DB 검색, LIKE ,NOT
204
php5 mysqli 디비 접속 클래스 프로그램 및 사용법
203
html에서 입력한값 DB에서 받아오기 (도서정보 검색)
202
SQL 쿼리 정리
201
[MySql]DB에서 서로 다른 테이블의 데이터를 한번에 불러오기
200
웹호스팅서버 그대로 따라 만들기
199
Fatal error: Allowed memory size of ~~
198
.htaccess 파일을 이용하여 PHP 업로드 용량 제한 변경
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침ㅣ모바일버전
Copyright ⓒ musictrot All rights reserved.