HTML кодировать, когда данные вводятся?Или считается или оба? - PullRequest
0 голосов
/ 17 июля 2010

Просто интересно, стоит ли мне кодировать все данные перед тем, как добавить их в базу данных или когда я отображаю их для пользователя? Или оба.

Прямо сейчас я делаю это, когда я показываю пользователю. Я использую asp.net mvc 2.0, поэтому я обычно просто делаю все <%: %> что делает для меня кодирование.

Я не уверен с обоими, хотя это может быть немного экстремальным, чтобы делать это время.

Кроме того, мне действительно нужно только следить за вводимой пользователем строкой, верно?

Как будто я только что столкнулся с проблемой, когда один из моих плагинов по какой-то причине не мог понять, как сортировать даты, если дата была закодирована в формате HTML.

Я просто сделал это, не задумываясь. Теперь, когда кто-то указал мне на это, нет никакого смысла делать это, так как я получаю дату прямо из базы данных, и в базе данных она сохраняется как дата и время. Поэтому я не могу хранить там JavaScript.

Так что, полагаю, мне не нужно кодировать их (поправьте меня, если я ошибаюсь)

int, бит (bools), типы данных, десятичные дроби, если они хранятся в базе данных таким образом.

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

1 Ответ

1 голос
/ 17 июля 2010

В большинстве случаев вам не нужно кодировать данные HTML, когда вы храните их в своей базе данных. Как вы уже заметили, для большинства типов данных (целые числа, даты и т. Д.) Лучше (т. Е. Повысить производительность, работать с другими системами и т. Д.), Чтобы сохранить их в незашифрованном виде.

Единственный случай, о котором вам нужно беспокоиться - это строки, поступающие из внешнего источника (например, конечного пользователя). Даже в этом случае должно быть достаточно сохранить данные в незашифрованном виде и использовать <%: ... %> для кодирования, как только данные возвращаются в браузер. Вам следует рассмотреть возможность кодирования строки только в том случае, если она исходит от какого-либо пользовательского элемента управления с поддержкой разметки (например, текстового редактора TinyMCE или чего-то подобного).

Также всегда будьте осторожны, чтобы защитить себя от атак SQL-инъекций. Прежде чем пытаться отправить его в свою базу данных, вы должны убедиться, что часть данных, которая должна представлять дату, на самом деле является датой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...