Должен ли необработанный HTML санироваться во время вывода или ввода? - PullRequest
2 голосов
/ 26 октября 2011

Страница CakePHP на Очистка данных гласит, что следует сохранять возможно необработанный HTML-код из пользовательского ввода в своей базе данных и выполнять санитарную обработку во время вывода:

Для очистки от XSS обычно лучшесохранять необработанный HTML в базе данных без изменений и выполнять санитарную обработку во время вывода / отображения.

Почему было бы предпочтительнее хранить (потенциально опасный) HTML в своей базе данных и очищать его только для вывода?Не приведет ли дезинфекция сначала к меньшему объему памяти при выполнении той же функции?

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

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

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

Используя CakePHP, вы должны использовать ярлык h () для всего , которое было введено пользователем в системе при отображении его в представлении.

Если вы используете класс Sanitize, я бы предложил вам создать метод, который будет очищать запись и помещать вызов этого метода в обратный вызов afterFind () модели и применять его к каждой возвращаемой записи. Если это нежелательно, вы по-прежнему можете вызывать метод очистки данных по мере необходимости.

3 голосов
/ 26 октября 2011

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

...