2014-02-19 4 views
0

Я пытаюсь защитить свой метод контроллера загрузки с помощью MVC ValidateAntiForgeryToken, но я изо всех сил пытаюсь понять, как получить __RequestVerificationToken, включенный в сообщение.Valums File Uploader - Включая ValidateAntiForgeryToken

Моих действий, как это:

[HttpPost, ValidateAntiForgeryToken] 
public ActionResult FileUpload(HttpPostedFileBase qqfile) 

Просматривая documentation для пользователя нет каких-либо открытых крючков, которые я могу найти, что позволит мне доступ за пределами коды ¯qq манипулировать форму он генерирует ,

Неужели кому-то еще удалось заставить это работать?

После редактирования исходного файла для создания формы мои запросы до сих пор не проходит проверку:

Запрос

http://localhost:54275/UserProfile/FileUpload?qqfile=266758_10150696082935268_8163320_o.jpg 

Host: localhost:54275 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-gb,en;q=0.5 
Accept-Encoding: gzip, deflate 
DNT: 1 
X-Requested-With: XMLHttpRequest 
X-File-Name: 266758_10150696082935268_8163320_o.jpg 
Content-Type: application/octet-stream 
X-Mime-Type: image/jpeg 
Referer: http://localhost:54275/UserProfile/Edit 
Content-Length: 625352 
Cookie: __test=1; RememberMe=-1167340540^1#-5833880764017141030; __RequestVerificationToken=BEIHblTcEaCio_1_i6bJnSYmituqQfq9y2ge63T85w15pAhbPldPZqY8DhLTubmtmd9OLtAuJcHdmfaFHSbn1L7oAYAtxDJWdMOOzNrddhU1; DotNetOpenAuth.WebServerClient.XSRF-Session=O-l5-Hv0flYqKL27j0TGhA; .ASPXAUTH=52C5EDFB92A09FA0395676E23BE1EBBBF03D3E88EF7C81761B76C1C8EF67936C0D9FBFD730ED77B0246C49757828A7C17D0DD7644A1C50988ECFF4C3DEDF15783E5FD7C4BA97E484F9FD6460EB6A5310E27453B461E320D10E74A5F8AEE1C0A5B1367D0DB4060958B48DACB12E80AA23; TCSESSIONID=D9016B850A1BCFD6921E274467F52CEE 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 
Fiddler-Encoding: base64 

ответ

0

Если посмотреть в исходном коде это выглядит, как вы могли бы добавить код символа antiforgery для функции _createForm: function (iframe, params) {...} пользователя и быть хорошим. См. Два ответа here для получения дополнительной помощи.

+0

Да, я видел этот код, когда я его просматривал, но такой хакерский источник почти наверняка попадает в пропасть, когда он обновляется позднее. Что-то я пытался избежать, чтобы быть честным. Благодарю. – Jammer

+0

Я уже использую какой-то аналогичный код для своего материала Ajax, поэтому у меня есть все, что на месте уже я просто не хотел взломать исходные файлы. – Jammer

+0

другой вариант, который я не тестировал, может заключаться в том, чтобы добавить анти-подделку к переменной params при вызове загрузчика. – PlTaylor

1

Я использую версию 5.11.10 из FineUploader (переименование FileUploader Валума в FineUploader history mentioned) и она содержит функцию, чтобы определить форму, см Form Options

Пример FineUpload с проверкой AntiForgeryToken если форма Безразлично 't любые другие значения формы должны включать в себя форму с некоторым id (testForm в приведенном ниже примере) с AntiForgeryToken.

@using (Html.BeginForm(MVCHelpers.Bank.Transactions.UploadFile(), FormMethod.Post, new { id = "testForm" })) 
{ 
    @Html.AntiForgeryToken() 
} 

И в FineUploader указать форму он должен отправить также:

<div id="fileUploadContainer"></div> 
<script> 
    var uploader = new qq.FineUploader({ 
     element: document.getElementById("fileUploadContainer"), 
     ... 
     form: { 
      element: "testForm", 
      autoUpload: true 
     } 
    }); 
</script> 

Это позволяет загружать файлы в сочетании с [ValidateAntiForgeryToken] на вашем действии. Вы также можете указать реальную форму, если загрузка является частью других значений формы, указав идентификатор этой формы. Обратите внимание на autoUpload true, поскольку он установлен по умолчанию при установке элемента формы.

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