Что означает <% = h ...%> в Rails? - PullRequest
6 голосов
/ 15 декабря 2010

Я нашел здесь следующий синтаксис:

<%=h @person.first_name %>

Что означает h?

Ответы [ 2 ]

11 голосов
/ 15 декабря 2010

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

http://api.rubyonrails.org/classes/ERB/Util.html#method-c-h

4 голосов
/ 15 декабря 2010

h является псевдонимом для метода html_escape в Rails.

Если вы не экранируете текст с помощью h, тогда кто-то может написать туда javascript, и он будет выполнен при рендеринге страницы.

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

...