2022. 4. 13. 14:28ㆍPrograming 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 |