본문 바로가기
Web/Mysql

[PHP&MYSQL] 보안

by merona99 2018. 8. 10.
반응형

*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

댓글