Laravel 5: включить laravel-debugbar

Это распространенное заблуждение, что пользовательский ввод может быть отфильтрован. PHP даже имеет (теперь устаревшую) «функцию», называемую магическими кавычками, которая основывается на этой идее. Это вздор. Забудьте о фильтрации (или очистке или о том, что люди назовут ее).

Что вы должны делать, чтобы избежать проблем, достаточно просто: всякий раз, когда вы вставляете строку в внешний код, вы должны избегать ее, согласно правила этого языка. Например, если вы вставляете строку в какой-то SQL-таргетинг на MySql, для этой цели вы должны вывести строку с функцией MySql (mysqli_real_escape_string). (Или, в случае баз данных, использование подготовленных операторов - лучший подход, когда это возможно)

Другим примером является HTML: если вы вставляете строки в разметку HTML, вы должны избегать его с помощью htmlspecialchars . Это означает, что каждый оператор echo или print должен использовать htmlspecialchars.

Третий пример может быть командами оболочки: если вы собираетесь встраивать строки (такие как аргументы) в внешние команды, и назовите их с помощью exec , вы должны использовать escapeshellcmd и escapeshellarg .

И так и т. д. ...

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

30
задан Steve 17 May 2015 в 16:04
поделиться