We-Co

[Python] XSS(Cross Site Scripting) 예방 - html 라이브러리를 활용해보자! 본문

Python

[Python] XSS(Cross Site Scripting) 예방 - html 라이브러리를 활용해보자!

위기의코딩맨 2024. 3. 4. 10:36
반응형

안녕하세요. 위기의 코딩맨입니다.

오늘은 간단하게 XSS를 공격에 대해서 예방하는 방법을 알려드리도록 하겠습니다.

 

일단 XXS를 간단하게 설명드리자면, 사이트 간 스크립팅, 크로스 사이트 스크립팅 으로 많이 알려져있으며

웹 애플리케이션에서 다양하게 나오는 취약점 중, 하나입니다.

 

일반적인 기능을 통해서 악성 스크립트를 삽입하여 비정상적인 기능을 수행하도록 합니다.

주로 다른 웹 사이트와 정보를 교환하는 방식으로 사용이 돼서 사이트 간 스크립팅이라 불립니다.

너무나도 나쁜 사람들.. 

 

그래서 사이트마다 입력란, 다른 입력을 주고 받는 부분에

특수문자를 입력하지 못하게 하는 이유도 이러한 XSS 공격을 막기위한 이유입니다.

이러한 XSS방지를 도와주는 라이브러리가 html의 escape 함수입니다.

 

[ escape ]

작동 원리를 설명드리면

아래의 간단한 스크립트 문이 있습니다.

기본적으로 <script>로 묶여서 스크립트가 구성되어있습니다.

<script>alert("hi")</script>

 

스크립트에서 특수문자들을 웹 애플리케이션에서 보여지는 언어로 변환되어 적용됩니다. 

예를들면 <, > 의 특수문자는 &lt; 와 &gt; 로 변환되어 문자열로 보여집니다.

그러나 웹 애플리케이션 화면에서는 문자열로 <, >로 보여집니다.

코드로 보여드리도록 하겠습니다.

import html

src = '<script>alert("hi")</script>'
print(src)
src_c = html.escape(src)
print(src_c)

 

src_c의 문자열에서 <, >와 "," 가 변환된 것을 확인할 수있습니다.

src를 그대로 사용되면 알림창 hi가 발생할 것이지만,

src_c를 사용하게되면 알림창이 발생하지 않고

웹 애플리케이션 상으로 <script>alert("hi")</script> 문자열이 보여지게 됩니다.

 

오늘은 html의 escape 함수를 활용하여 XSS공격을 방지할수 있는 방법을 간단하게 알아보았습니다.

XSS는 보안상의 문제에서 중요시 여겨지는 부분 중 하나임으로 개발하면서 신경을 잘 써줘야합니다.

다들 즐거운 개발을 하시기 바랍니다.

반응형