#asp.net-mvc-3
#asp.net-mvc-3
Вопрос:
Я только начинаю изучать MVC3 и работаю над тем, чтобы пользователи могли включать / отключать отображение изображения из своей учетной записи … обновляя active до true или false по ссылке и идентификатору, передаваемому через HttpPost
var image1 = new BigImage();
image1.id = id;
db.BigImage.Attach(image1);
image1.active = 0;
db.SaveChanges();
Вопрос:
Как мне избежать дыр в безопасности или ситуаций, когда кто-то может перейти, например, в /home /user /image /deactivate / 5. Каков правильный подход?
Я прочитал сообщение о том, что ссылки на удаление не используются. Те же проблемы с обновлением? Я в замешательстве.
Ответ №1:
HTTP GET не следует использовать для внесения изменений в базовые данные. Основная причина в том, что веб-поисковики и поисковые системы могут и будут непреднамеренно изменять или удалять что-либо, переходя по ссылкам.
На самом деле это не такая уж большая проблема, если запросы аутентифицируются, как упоминал @Will, но это не очень хорошая привычка.
Если вы хотите использовать ссылки и следовать рекомендациям по использованию POST для изменения данных, вы можете использовать форму с кнопкой, которая выглядит как ссылка. Вот фрагмент кода, подобный тому, который я использую в MVC2:
<% using (Html.BeginForm("Delete", "Item", new { id = item.Id }, FormMethod.Post, new { onsubmit = "return confirm('Are you sure you want to delete " item.DisplayString "?');" }))
{ %>
<input class="link-button" type="submit" value="Delete" />
<% } %>
И CSS моей кнопки:
.link-button {
border: 0;
padding: 0;
background: inherit;
font: inherit;
cursor: pointer;
text-decoration: underline;
color: #034af3;
overflow: visible;
}
Затем, конечно, поместите [HttpPost]
атрибут в метод контроллера, который фактически удаляет элемент.
Комментарии:
1. Большое вам спасибо! Это сработало! Супер! На случай, если другие задаются вопросом о версии синтаксиса razor… @using (Html.BeginForm(«Деактивировать»,…) { содержимое вашей формы здесь }
Ответ №2:
Вам нужно будет использовать аутентификацию для установления привилегий, а также проверки пользователей. Хорошим местом для начала является веб-сайт ASP: http://www.asp.net/mvc/tutorials/authenticating-users-with-forms-authentication-cs