2015-02-02 7 views
0

간단한 질문 일 수도 있지만 다른 전문가와상의하고 싶습니다.데이터가 클라이언트에서 수신되었지만 데이터베이스에 저장되지 않은 XSS

문제가 있습니다.
사용자가 양식을 제출합니다 (예 : 포럼에 새 스레드 게시). 그의 브라우저는 웹 응용 프로그램에 데이터를 보내고 웹 응용 프로그램은 js 코드에서 데이터를 정제하고 DB에 저장합니다. 괜찮아.

또 다른 경우 - 사용자가 웹 응용 프로그램에 데이터를 제출했지만 데이터에 오류가 발생하고 웹 응용 프로그램에서 데이터를 저장하지 않고 (DB에 저장하지 않고) 양식에 넣고 (사용자가 모두 다시 수행하지 못하도록) 메시지 오류를 표시합니다.

질문.
다음 공격을 수행 할 수 있다고 읽었습니다. 사용자가 Google 사이트로 리디렉션하고 js를 사용하여 데이터를 보내는 링크 (외부 링크)를 따르십시오. 따라서 질문 - 두 번째 경우에 데이터를 정제해야합니까?

+0

양식을 비동기로 제출하면 두 번째 경우의 데이터 관리에 대해 걱정할 필요가 없습니다. 요청 실패를 반환하고 사용자에게 데이터를 다시 확인하도록 요청하십시오. 사용자가 페이지를 떠나지 않았기 때문에 모든 양식 데이터는 그대로 유지됩니다. – Nit

+0

"데이터 정제"란 무엇을 의미합니까? – MaxZoom

+0

더 이상 도움이 필요하십니까? 그렇다면 내 대답을 업데이트 할 것입니다. – SilverlightFox

답변

0

AJAX가 양식을 제출하면됩니다.

$("#myForm").ajaxForm({url: 'server.php', type: 'post'}) 

또는

$("#myForm").ajaxSubmit({url: 'server.php', type: 'post'}) 

데이터 인 경우 :
  • 는 리디렉션 URL을 반환 수정합니다.
  • 잘못된 경우 표시 할 오류를 반환합니다.

"데이터 정리"와 같은 추가 기능이 필요하지 않습니다.

0

CSRF 공격 (교차 사이트 요청 위조)을 의미합니까?

이 사이트 양식이있는 경우, 그것은 example.com 말하는 곳이다 :

<form method="post" action="/postThread.php"> 

자신의 웹 사이트에 유사한 형태로 포함 할 수있다 공격자 :

<form method="post" action="https://example.com/postThread.php"> 

를 방문하는 피해자를 유혹 그들의 사이트는 또한 example.com에 로그인되어 있습니다.

HTML 양식 제출 (IFrame 또는 AJAX로로드 될 수 있음) 양식 제출을위한 JavaScript가 일부 포함될 수 있습니다. 결과적으로 스레드는 피해자의 ID로 공격자가 사이트에서 시작할 수 있습니다. 이는 피해자의 쿠키가 POST와 함께 제출되기 때문입니다.

빠른 방어 방법은 모든 POST가 AJAX를 통해 이루어지면 X-Requested-With 헤더를 설정하고 확인하는 것입니다. 그렇지 않은 경우 OWASP에서 권장하는 Synchronizer Token Pattern을 살펴볼 수 있습니다.

관련 문제