У меня есть веб-сайт ASP.NET, управляемый блогами. Под сообщением есть блок комментариев, позволяющий читателям оставлять комментарии.
Я использовал для этого некоторые TextBoxes и TextArea.
Чтобы предотвратить XSS:
Я отфильтровал ввод с помощью метода: Server.HtmlEncode () (меня не волнует форматирование текста).
Чтобы предотвратить SQL-инъекцию:
Я использую Linq To SQL (я думаю, это должно быть похоже на параметризованные запросы!).
Теперь я в безопасности?
Потому что я установил ValidateRequest = "false" в директиве страницы.
Вот код:
ArticlesDataClasses dc = new ArticlesDataClasses();
ArticleComment newComm = new ArticleComment()
{
ArticleID = int.Parse(Request.QueryString["ArticleID"]),
CommentAuthor = Server.HtmlEncode(txtName.Text),
CommentText = Server.HtmlEncode(txtComment.InnerHtml).Replace("\n", "<br />"),
CommentAuthorEmail = Server.HtmlEncode(txtMail.Text),
CommentTime = DateTime.Now,
Enabled = false
};
dc.ArticleComments.InsertOnSubmit(newComm);
dc.SubmitChanges();
Спасибо..
int.Parse
вызовет исключение, еслиArticleID
QS не является INT. Следует использовать здесь TryParse и, да, очистить ввод перед сохранением. Но в целом ты выглядишь нормально. - person RPM1984   schedule 12.11.2010