Удаление Azure Blob в MVC 3 - PullRequest
       15

Удаление Azure Blob в MVC 3

0 голосов
/ 19 июля 2011

Я пытаюсь удалить BLOB-объекты в приложении MVC 3, которое использует хранилище Azure.

Я пытаюсь передать Uri блоба, который будет удален контроллеру, однако выдается ошибка:

A potentially dangerous Request.Path value was detected from the client (:)

Я думаю, что это из https: части Uri, и мне нужно разобрать это, однако я не уверен, как это сделать. Мне интересно, как исправить эту ошибку.

Есть ли более изящный способ удаления большого двоичного объекта из хранилища?

Ответы [ 3 ]

1 голос
/ 19 июля 2011

Если вы хотите, чтобы небезопасный контент проходил, тогда вы можете добавить [ValidateInput(false)] к вашему действию - однако это открывает что-то, что есть для вашей безопасности - так что делайте это, только если вы уверены, что код безопасен- см. первый ответ в Потенциально опасное значение Request.Form было обнаружено от клиента

1 голос
/ 19 июля 2011

Вы должны правильно URL кодировать свои URL. Вот пример плохо закодированного URL:

http://foo.com/controller/action?param=http://bar.com

Вот как это должно выглядеть:

http://foo.com/controller/action?param=http%3A%2F%2Fbar.com

Или, возможно, у вас есть URL-адрес вида:

http://foo.com/controller/action/https://bar.com

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

0 голосов
/ 19 июля 2011

Мне удалось это исправить, и я хочу обобщить решение, так как оно требует бит из двух других ответов и биты в основном из Скотта Хансельмана в блоге.

Вам нужноЧтобы сделать эту работу несколько вещей:

  • Поместите [ValidateInput(false)] в ваш метод действия.

  • Убедитесь, что ваш URL-адрес правильныйзакодировано (пример приведен в вышеприведенном посте), что делается, когда вы используете blobVariableName.Uri.AbsoluteUri в качестве строки для передачи из вашего представления в ваш контроллер, поэтому вам не нужно ничего делать там.

  • Сделайте так, чтобы ваша строка запроса выглядела как http://site/controller/action?blobid=http%3A%2F%2F..., а НЕ http://site/controller/action/http%3A%2F%2F..., последняя не будет работать!

Кстати, с тех пор, как я начал, наш функционалтребования изменились, и теперь в базе данных хранится информация о каждом BLOB-объекте, что позволяет мне передавать параметры, отличные от URI-объекта BLOB-объекта, что представляется гораздо более безопасным способом воспроизведения.

Большая часть сообщества, похоже, согласна с тем, что плохая идея передать URI и открыть ваше приложение, чтобы позволить вам это сделать.

...