2008-10-27 4 views
6

XSS 공격으로부터 보호하기 위해 만든 리치 텍스트 편집기가 있습니다. 나는 거의 모든 것을 다 처리했다고 생각하지만, 나는 이미지로 무엇을해야하는지 아직도 확신 할 수 없다. 지금은 내가 인라인을 차단합니다 있으리라 믿고있어 이미지 URL을 검증하기 위해 다음과 같은 정규식을 사용하고 자바 스크립트 XSS 공격 :이에서 XSS 공격에 나 잎 얼마나 개방의 확실하지 않다 무엇이미지의 교차 사이트 스크립팅

"https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+" 

원격 이미지. 외부 이미지를 심각한 보안 위협으로 연결하고 있습니까?

제가 생각할 수있는 유일한 점은 입력 한 URL이 이미지의 일종이 아닌 MIME 유형으로 "text/javascript"을 반환하는 리소스를 참조하고 자바 스크립트가 실행된다는 것입니다.

그럴 수 있습니까? 고려해야 할 다른 보안 위협이 있습니까?

+2

나는 또한 ha.ckers.org 컨닝 페이퍼 추천 : ha.ckers.org/xss.html –

답변

4

또 다른 걱정할 점은 이미지 안에 PHP 코드를 쉽게 포함시킬 수 있다는 것입니다. 그런 다음 공격이 할 수있는 유일한 방법은 이미지를 포함하는 방법을 찾는 것입니다. (PHP 코드 만 실행되고, 나머지는 그냥 에코됩니다). 침입자가 정확한 처음 몇 바이트와 임의의 PHP 코드가 뒤 따르는 이미지를 쉽게 업로드 할 수 있기 때문에 MIME 유형을 확인해보십시오. HTML과 Javascript 코드의 경우에도 마찬가지입니다.

+0

내가 두지 않을거야 사용자를 업로드 이미지. 사용자는 언급 한 것과 같은 이유로 다른 사이트의 이미지에만 연결할 수 있습니다. –

+0

간단한 파일 이름 필터가이 문제를 방지하지 않습니까? – AaronSieb

+0

@AaronSieb, 아니요. 예를 들어 GIF 팔레트에 PHP 코드를 삽입하고 올바른 파일 유형 및 MIME 유형으로 완벽하게 유효한 GIF 이미지를 업로드 할 수 있기 때문입니다. 문제는, 당신이 곤란한 include ("my_uploaded_gif.gif")를하기 위해 웹 사이트를 조작 할 수있는 한. 또한 % 00 것을 지켜보십시오. –

1

그런 경우 주변 컨텍스트를 살펴보십시오. 사용자는 URL 만 제공합니까? 이 경우 URL 의미 및 MIME 유형의 유효성을 검사하는 것이 좋습니다. 사용자가 일종의 태그를 입력하게되면 다른 것들을 조작 할 수 있도록 조작 할 수 없는지 확인해야합니다.

2

엔드 뷰어가 암호로 보호 된 영역에 있고 앱에 GET 요청을 기반으로 작업을 시작하는 URL이 포함되어있는 경우 사용자를 대신하여 요청할 수 있습니다.

예 :

  • SRC = "http://yoursite.com/deleteuser.xxx?userid=1234"
  • SRC = "http://yoursite.com/user/delete/1234 "
  • SRC ="http://yoursite.com/dosomethingdangerous "
+0

정말 그 취약점에 취약합니까? 내 Regex는 URL의 시작 부분에서만 http/https를 허용하므로 Javascript (또는 그 인코딩)가 통과 할 수 없어야하며, 그렇지 않습니까? –

+0

아, 'https'를 잊어 버리셨습니까?: // '. 내 대답을 편집 할게. –

+0

REST에 의해 우리는 GET으로 아무 것도 쓸 수 없습니다 ... – inf3rno