[PHP+MYSQL] XSS(Cross Site Scripting) attack

jckim22·2022년 9월 29일
0

1.XSS Cross Site Scripting

아래 웹 어플리케이션의 소스코드 게시 글 부분을 보면 결국 사용자가 올린 "SQL Server is ..."이라는 게시글은 웹서버 -> PHP -> DataBase -> PHP -> 웹서버를 거쳐서 HTML 코드로 변환되어 클라이언트의 화면에 나타난다는 것을 볼 수 있다.

이 말은 즉슨 실행될 수 있는 코드를 입력하면 어플리케이션을 조작할 수 있다는 말이 된다.

클라이언트가 <script>문을 주입하여서 나의 어플리케이션에 큰 문제를 일으킬 수 있는 XSS 공격을 방어하고 싶었다.

escaping방식으로 basename()과 htmlspecialchars(), Script_tags() 함수를 통해 XSS공격을 방어할 수 있었다.

2.Attack

이렇게 나의 웹서버에 script 코드를 주입하였다.

그 내용은 해킹되었다는 알림이 뜬 후 네이버라는 사이트로 강제 이동시키는 내용이다.

아래는 공격이 성공하여서 게시글을 올린 뒤 그 게시글을 클릭하면 이렇게 알림창이 뜨고 네이버로 이동되는 것을 볼 수 있다.


3.Protect

이 공격을 방어하기 위해서 htmlspecialchars(), Script_tags() 중 Script_tags()를 사용하여 일부분의 태그만 허용하고 나머지 태그들은 무시하는 코드를 작성했다.

아래에서는 게시글을 다시 클릭했을 때 방어에 성공해서 공격성 스크립트 코드들이 전부 무효화 처리 된 것을 볼 수 있다.

profile
개발/보안

0개의 댓글