about addslashes & stripslashes

2022. 4. 13. 14:28Programing Language/Php

 

이미 아시는 분들은 그냥 넘어가주시거나 참고만 해주시면 감사하겠습니다


○addslashes

addslashes(string $string): string

 

DBMS에서는 문자열을 저장할때 ' " \ NULL을 기준으로 문자열을 구분합니다.

하지만 위의 문자가 포함된 데이터를 가져올 때 예기치 못한 오류가 발생할 수 있습니다.

위를 방지하기 위해 데이터베이스 질의에서 처리할 필요가 있는 문자 앞에 백 슬래시[\]를 붙입니다.

 

ex)

$str = I'm a boy;

$output = addslashes($str);

-> I\'m a boy

위처럼 addslashes를 사용하면 I'm a boy의 ' 앞에 \을 붙여주어 문자열로 바꿔버려 쿼리문의 오류발생을 하지 않습니다.

lost을 푸신분들 아시겠지만 addslahses함수가 자주나와 우회하기 위해 애를 먹었었는데 addslashes함수는

완벽하지는 않지만 보안상으로 sql injection 공격도 일부 방어가 가능합니다.

ex)

$id= "0' OR 1=1";

$query= "SELECT * FROM User_info WHERE id='$Id'";
-> SELECT * FROM User_info WHERE id='0' OR 1=1; // id=0 -> false, 1=1 -> 항상참 ----> sql injection 실행가능

 

 

$id= addslashes("0' OR 1=1");

$query= "SELECT * FROM User_info WHERE id='$Id'";

-> SELECT * FROM User_info WHERE id= '0\' OR 1=1

' 앞에 \를 붙여 문자열로 인식시켜버리니 sql injection 공격이 불가능함

 

○stripslashes

stripslashes(string $string): string

 

stripslashes함수는 addslashes함수와 반대로 문자열을 DB에서 꺼내와 웹에 보여줄 때는 백 슬래시를 제거해줍니다.

 

ex)

$str = I\'m a boy;

$output = stripslashes($str);

-> I'm a boy

 

'Programing Language > Php' 카테고리의 다른 글

Php wrapper  (0) 2022.05.17
about magic_quotes_gpc  (0) 2022.04.12
Superglobal variables  (0) 2022.03.17