Когда лучше всего дезинфицировать пользовательский ввод? - PullRequest
51 голосов
/ 29 августа 2008

Пользователь не заслуживает доверия. Никогда не доверяйте ненадежным данным пользователя. Я понимаю. Тем не менее, мне интересно, когда наилучшее время для дезинфекции ввода. Например, сохраняете ли вы слепой пользовательский ввод и затем очищаете его, когда к нему обращаются / используют, или вы немедленно очищаете ввод и затем сохраняете эту «очищенную» версию? Может быть, есть и другие подходы, которые у меня нет, в дополнение к этим. Я больше склоняюсь к первому методу, потому что к любым данным, полученным от пользовательского ввода, все равно следует подходить осторожно, поскольку «очищенные» данные могут все еще быть по незнанию или случайно опасными. В любом случае, какой метод люди считают лучшим и по каким причинам?

Ответы [ 14 ]

1 голос
/ 29 августа 2008

Пользователи злые!

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

Дополнительным преимуществом является то, что вы можете обеспечить обратную связь с пользователем, если вы выполняете санитарную обработку в точке ввода.

1 голос
/ 29 августа 2008

Очистите данные перед сохранением. Как правило, вы не должны предварительно выполнять действия ANY SQL без предварительной очистки ввода. Вы не хотите подвергать себя атаке SQL-инъекций.

Я как бы следую этим основным правилам.

  1. Изменяйте только действия SQL, такие как INSERT, UPDATE, DELETE - POST. Никогда не ПОЛУЧАТЬ.
  2. Побег все.
  3. Если вы ожидаете, что пользовательский ввод будет чем-то, убедитесь, что вы проверите, что это что-то. Например, вы запрашиваете номер, а затем убедитесь, что это номер. Используйте проверки.
  4. Использовать фильтры. Уберите нежелательных персонажей.
0 голосов
/ 29 августа 2008

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

0 голосов
/ 29 августа 2008

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

...