【发布时间】:2023-03-15 13:25:01
【问题描述】:
我正在尝试使用 javascript 显示资源的属性。我确定我犯了一个简单的错误或遗漏。
我试图了解
j render的工作原理以及为什么它是必要的。我知道这与恶意用户输入 javascript 并将在应用程序中执行这可能导致坏事发生的情况有关。
设置:Rails 应用中的简单博客模板:rails g scaffold Blog title:string content:text
views/blogs/show.html.erb
<div id="blogContent"> Javascript should enter result of @blogger.content here: </div>
assets/javascripts/blogs.coffee
$document.on "page:change", ->
$blogPost = "<%= j render(@blog.content) %>"
alert($blogPost)
$('#blogContent').append($blogPost)
以下是我遇到的问题:
警告框正在返回:
<%= j render(@blog.content %>。我希望它返回该博客的内容。
1234563例如,如果在内容中,恶意用户输入了:
<a href='DangerousSite.xyz'>Hacker says click for free stuff</a>,那么我的应用程序渲染@blog.content 会产生一个链接,上面写着:Hacker says click for free stuff。一旦我向自己证明转义 javascript 是防止此类事情发生所必需的,我希望能够转义它并让结果字面上显示<a href="Dangerous Site">Hacker says click for free stuff</a>,或者呈现净化后的 javascript 看起来像的任何其他方式。
【问题讨论】:
标签: jquery ruby-on-rails coffeescript