Laravel безопасно использовать {!! nl2br (e ()) !!} в клинке - PullRequest
0 голосов
/ 09 мая 2018

Для вывода текста в шаблонах лезвий Laravel с новыми строками я использую это:

{!! nl2br(e($prodData->text))!!}

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

public function setDescriptionAttribute($description)
  {
      $this->attributes['description'] = preg_replace('~(\R{2})\R+~', '$1', $description);
  }

Но теперь я беспокоюсь, что {!!nl2br(e())!!} может вызвать инъекции xss, так что это безопасно для использования?

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Если e() является безопасным, то {!! nl2br(e()) !!} является безопасным ( «безопасность» и «безопасность» ).

{{ $foo }} эквивалентно {!! e($foo) !!}. Так что {!! nl2br(e()) !!} - правильный подход к вашей ситуации.

Относительно ответа @ Loek: e() зависит от безопасности htmlspecialchars(). Если бы в htmlspecialchars() был бы недостаток, в основном, каждый сайт PHP имел бы огромную проблему.

0 голосов
/ 09 мая 2018

По определению нет .

При обработке пользовательского ввода существует только одно правило: никогда доверять пользовательскому вводу.

Конечно, вы должны оценить риск, но по определению это небезопасно. В версии 10 веб-уязвимостей OWASP 2017 года вы занимаетесь 7-м: https://www.owasp.org/index.php/Top_10-2017_A7-Cross-Site_Scripting_(XSS)

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