XSS에 대해 읽었으며 간단한 양식을 작성하여 입력을 제출했습니다. 그러나 <script>alert();</script>
을 실행하면 아무 일도 일어나지 않으며 서버가 그 문자열을 얻습니다.입력을 XSS에 취약하게 만드는 요인은 무엇입니까?
취약성을 없애려면 어떻게해야합니까 ?? (그러면 내가 헤헤하지 말아야 할 것을 배울 것이다)
건배.
XSS에 대해 읽었으며 간단한 양식을 작성하여 입력을 제출했습니다. 그러나 <script>alert();</script>
을 실행하면 아무 일도 일어나지 않으며 서버가 그 문자열을 얻습니다.입력을 XSS에 취약하게 만드는 요인은 무엇입니까?
취약성을 없애려면 어떻게해야합니까 ?? (그러면 내가 헤헤하지 말아야 할 것을 배울 것이다)
건배.
실제로 서버에 출력을 허용하여 입력 문자열이 클라이언트에 반환되는 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}">
이 방법을 "이상한"공격 문자열을 작동합니다. 그것들은 <
, >
및 "
에 의해 <
, >
및 으로 바뀌므로 최종 사용자 입력은 HTML 소스에 그대로 포함되지 않고 대신 입력 된 그대로 표시됩니다.
서버가 입력을 클라이언트에 다시 출력하게하십시오.
"서버에서 클라이언트로 입력을 다시 출력하도록했습니다."라고 읽었을 때이 질문에 대한 답변이 가장 간단하고 답답했습니다. –
스크립트를 "주입"해야합니다. 당신은 텍스트 입력이있는 경우 그래서, 당신은 형식에 넣어해야합니다
" /> <script>alert();</script>
이 방법은 먼저 기존 HTML의 속성을 닫은 후 자신의 코드를 삽입. 아이디어는 따옴표를 벗어나는 것입니다.
그건 그가 묻는 것이 아닙니다. 그는 공격을 수행하는 방법을 알고 있으며, 무엇이 입력을 취약하게하는지 묻습니다. – 0112
3 개의 간단한 일 : 당신이 어떤 시점에서 페이지에 신뢰할 수없는 데이터를 출력하지 않는 경우
OWASP Top 10 for .NET developers part 2: Cross-Site Scripting (XSS)에 대한 정보가 더 있습니다.
서버 측 언어를 사용하고 있습니까? – StingyJack
.NET (그러나 ASP.NET은 아님) – vtortola