2010-05-25 5 views
6

XSS에 대해 읽었으며 간단한 양식을 작성하여 입력을 제출했습니다. 그러나 <script>alert();</script>을 실행하면 아무 일도 일어나지 않으며 서버가 그 문자열을 얻습니다.입력을 XSS에 취약하게 만드는 요인은 무엇입니까?

취약성을 없애려면 어떻게해야합니까 ?? (그러면 내가 헤헤하지 말아야 할 것을 배울 것이다)

건배.

+0

서버 측 언어를 사용하고 있습니까? – StingyJack

+0

.NET (그러나 ASP.NET은 아님) – vtortola

답변

20

실제로 서버에 출력을 허용하여 입력 문자열이 클라이언트에 반환되는 HTML 소스에 효과적으로 포함되도록합니다.

PHP 예 :

<!doctype html> 
<html lang="en"> 
    <head><title>XSS test</title></head> 
    <body> 
     <form><input type="text" name="xss"><input type="submit"></form> 
     <p>Result: <?= $_GET['xss'] ?></p> 
    </body> 
</html> 

JSP 예 :

<!doctype html> 
<html lang="en"> 
    <head><title>XSS test</title></head> 
    <body> 
     <form><input type="text" name="xss"><input type="submit"></form> 
     <p>Result: ${param.xss}</p> 
    </body> 
</html> 

은 또한 당신이 입력 요소의 값을 다시 표시 할 수 있습니다, 즉도 종종 볼 수있다 :

<input type="text" name="xss" value="<?= $_GET['xss'] ?>"> 

RESP를. 서버가 결국 XSS 방지 솔루션이 다른 각각 PHP와 JSP에 대한 htmlspecialchars()fn:escapeXml() 중입니다

<input type="text" name="xss" value=""/><script>alert('xss')</script><br class=""> 

로 렌더링하기 때문에 "/><script>alert('xss')</script><br class=" 같은

<input type="text" name="xss" value="${param.xss}"> 

이 방법을 "이상한"공격 문자열을 작동합니다. 그것들은 <, >"에 의해 &lt;, &gt; 및 으로 바뀌므로 최종 사용자 입력은 HTML 소스에 그대로 포함되지 않고 대신 입력 된 그대로 표시됩니다.

19

서버가 입력을 클라이언트에 다시 출력하게하십시오.

+2

"서버에서 클라이언트로 입력을 다시 출력하도록했습니다."라고 읽었을 때이 질문에 대한 답변이 가장 간단하고 답답했습니다. –

4

스크립트를 "주입"해야합니다. 당신은 텍스트 입력이있는 경우 그래서, 당신은 형식에 넣어해야합니다

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

이 방법은 먼저 기존 HTML의 속성을 닫은 후 자신의 코드를 삽입. 아이디어는 따옴표를 벗어나는 것입니다.

+0

그건 그가 묻는 것이 아닙니다. 그는 공격을 수행하는 방법을 알고 있으며, 무엇이 입력을 취약하게하는지 묻습니다. – 0112

2

Google은 XSS 및 기타 보안 취약점 here을 다룬 멋진 튜토리얼을 만들었습니다. 실제 응용 프로그램에서 이러한 문제가 어떻게 활용되는지 이해하는 데 도움이됩니다.

+2

그 링크는 이제 죽었습니다 ... – mix3d

1

3 개의 간단한 일 : 당신이 어떤 시점에서 페이지에 신뢰할 수없는 데이터를 출력하지 않는 경우

  1. 이 (등 양식, 쿼리 문자열, HTML 헤더)
  2. 귀하의 모든 untusted 데이터 XSS에 대한 기회가 없다 허용 범위 내에 있는지 확인하려면 허용 목록과 비교하여 유효성을 검사해야합니다.
  3. 적절한 출력 (HTML, CSS, JS 등)으로 적절한 라이브러리 (예 : Anti-XSS for .NET)로 끝내야합니다.).

OWASP Top 10 for .NET developers part 2: Cross-Site Scripting (XSS)에 대한 정보가 더 있습니다.

관련 문제