Web/Mysql
[PHP&MYSQL] 보안
merona99
2018. 8. 10. 06:22
반응형
*PHP와 MySQL을 연동할 때 생기는 보안관련 문제
1. 입력 공격의 차단
mysqli_real_escape_string 을 사용.
이를 사용할경우 뒤에 들어오는 인자들을 모두 문자열로 해석하게 됨.
이러면 사용자가 url이나 입력부분에 위험한 내용을 적는것을 예방할 수 있음.
예를들어 DROP TABLE topic을 적게되면 topic이 사라져버리는 결과가 나올 수 있음.
이런식으로 GET앞에 $conn을 먼저 적어주면 된다.
은근 간단하다.
2. SQL주입(injection)의 차단
sql injection이란 사용자가 악의적인 목적으로 php등의 구문을 조작해 내용을 변경하는 것이다.
<만약mysqli_real_escape_string이 없다면? >
앞의 mysqli_real_escape_string 부분을 삭제해 줌.
<이렇게 적었다고 했을때>
아래의 $result값에는 mysqli_query가 아닌 mysqli_multi_query를 적어주어야함.
마지막에 ;이 문장의 끝을 알려주고 -- (스페이스바 있음)이 뒤에 문장은 주석임을 보여줌.
<생성성공>
<db의 변화>
보면 created시간이 내가 조정한 시간으로 되어있는 걸 볼 수 있음.
오호..
*그렇다면 mysqli_real_escape_string를 썻을때의 모습은?
<사용>
<생성>
<완료>
<db의 변화>
시간이 내가 설정한대로 되지않고 작성한 모든부분이 description에 그대로 들어가 있는걸 볼 수 있음.
//결국 밤을 새버렸다.
다음 포스팅부터는 injection에다가 올릴 것이다.
반응형