2017-01-04 20 views
0

Я пытаюсь проверить конкретную конечную точку POST на нашем сайте от атак CSRF.Пытаемся проверить CSRF/XSRF наш сайт - могу ли я использовать iframe для POST?

Для этого я пытаюсь использовать iFrame. Когда я submit форму перетаскивает всю страницу. У меня создалось впечатление, что окно iFrame должно делать только форму, а не всего (root?) Документ?

пример кода ...

<html> 
<body> 

    <p> 
     <h3>CSRF Test.</h3> 
     <a href="#" onClick="crossDomainPost();">Click Me</a> 
    </p> 

    <form id="csrfForm" action="http://www.someWebsite/postTest" method="POST"> 
     <snipped> 
    </form> 

    <iframe name="someiframe"></iframe> 

<script type="text/javascript"> 
    function crossDomainPost() { 
     var iframe = $('#someiframe'); 

     var form = $('#csrfForm'); 
     iframe.add(form); 

     // Submit the form in the iframe. 
     form.submit(); 
    } 
</script> 
</body> 
</html> 
+0

'add()' не помещает форму в iframe, она просто добавляет элемент в объект jQuery. Можно использовать 'target' в форме для iframe – charlietfl

+0

, вы имеете в виду это:' var form = $ ('# csrfForm'); form.target = "someiframe"; form.submit(); '? (потому что это не работает). –

+0

не сделали этого в течение очень долгого времени, но должен работать http://stackoverflow.com/questions/8306640/use-hidden-iframe-to-submit-data – charlietfl

ответ

2

Попробуйте установить target на форме, чтобы быть IFrame

<form id="csrfForm" action="url" method="POST" target="someiframe"> 
0

Кроме того, если вы хотите использовать JavaScript, чтобы обрабатывать почту (потому что форма может не всегда хотят целевой IFrame ..

<-- No target attribute here --> 
<form id="csrfForm" action="url" method="POST"> 

... 

function crossDomainPost() {  
    var form = $('#csrfForm'); 
    form[0].target = "someiframe"; 
    form.submit(); 
} 

(Совет шляпы: @charlietfl и его комментарии в OP).