ASP.NET: Безопасен ли я в этой ситуации от внедрения SQL и XSS?

У меня есть веб-сайт 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();

Спасибо..


person Hashem AL-Rifai    schedule 12.11.2010    source источник
comment
это звучит как ваш сейф, но можете ли вы показать код для сохранения комментария в базе данных? это самая важная часть. (для предотвращения SQL-инъекций)   -  person RPM1984    schedule 12.11.2010
comment
Спасибо, RPM1984, я отредактировал пост и разместил код.   -  person Hashem AL-Rifai    schedule 12.11.2010
comment
да, ваш сейф. Подсказка: вы должны выполнить кодирование в последнюю минуту где-нибудь еще (не в коде для вставки). например, int.Parse вызовет исключение, если ArticleID QS не является INT. Следует использовать здесь TryParse и, да, очистить ввод перед сохранением. Но в целом ты выглядишь нормально.   -  person RPM1984    schedule 12.11.2010
comment
Выглядит неплохо. OWASP предоставляет отличную библиотеку веб-приложений с открытым исходным кодом под названием ESAPI, owasp.org/index.php / Категория: OWASP_Enterprise_Security_API. Также Security Compass предлагает плагины XSS Me и SQL Inject для FF.   -  person gnome    schedule 12.11.2010
comment
Спасибо RPM1984 за советы, но где лучше всего делать кодирование?   -  person Hashem AL-Rifai    schedule 12.11.2010
comment
gnome, благодарю за ссылку.   -  person Hashem AL-Rifai    schedule 12.11.2010
comment
Вместо Server.HtmlEncode используйте HttpUtility.HtmlEncode - aspnetsource.com/blog/ post-server-htmlencode-vs.aspx - или даже используйте AntiXss - wpl.codeplex.com   -  person Lareau    schedule 12.11.2010


Ответы (1)


Параметры и кодировка являются основными, но вы также можете принять участие в атаке межсайтовых запросов и предотвратить публикацию, если реферер не является вашим сайтом:

http://haacked.com/archive/2009/04/02/anatomy-of-csrf-attack.aspx

person Michael Shimmins    schedule 12.11.2010