반응형
*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에다가 올릴 것이다.
반응형
'Web > Mysql' 카테고리의 다른 글
[Mysql] 세가지 MYSQL API 비교 (0) | 2018.11.02 |
---|---|
[PHP&MYSQL] SQL select(PHP mysqli) (0) | 2018.08.10 |
[PHP&MYSQL] 연동&오류 (0) | 2018.08.02 |
[PHP&MYSQL] 연동원리 (0) | 2018.08.02 |
[mysql] C.U.R.D -핵심 (4) | 2018.07.31 |
댓글