用户通过文本字段输入的&符号?

Mik*_*keH 2 html validation xhtml user-input escaping

像今天的几乎所有应用程序一样,我有用户通过标准文本输入输入各种信息.我的应用程序在Rails上运行.

逃避&符号作为站点副本的一部分等等,这是一个明智的选择.但是如何逃避用户动态输入的&符?目前,它正在破坏我的前端验证.

Guf*_*ffa 6

显示值时,需要用HTML实体替换某些字符.这些人物是:

& : &
< : &lt;
> : &gt;
" : &quot;
Run Code Online (Sandbox Code Playgroud)

也许你可以使用一个HtmlEncode函数,否则你可以使用普通的字符串操作.伪代码:

output replace(replace(replace(replace(text, "&", "&amp"), "<", "&lt;"), ">", "&gt;", """", "&quot;")
Run Code Online (Sandbox Code Playgroud)

编辑:
我发现你可以使用html_escape()函数:

<%=html_escape @text%>
Run Code Online (Sandbox Code Playgroud)

或者简短:

<%=h @text%>
Run Code Online (Sandbox Code Playgroud)

  • 随后阅读其他内容的提示.在我的特殊情况下,文本是超链接的.我正在使用link_to方法.如果您尝试执行<%= h link_to url,url%>,那么您的网址将在屏幕上打印出来.这样做的方法是这样的:<%= link_to(h(url),url)%> (2认同)