【发布时间】:2016-03-29 02:17:49
【问题描述】:
出于安全原因,我只是想知道调用params[:id] 之类的参数是否安全,这些参数来自(eg. /?id=<script>console.log(1)</script>) 中的请求参数,在h3 = params[:id] 等rails 的苗条模板中。
参数是否自动转义或清理?
感谢您的帮助。
【问题讨论】:
出于安全原因,我只是想知道调用params[:id] 之类的参数是否安全,这些参数来自(eg. /?id=<script>console.log(1)</script>) 中的请求参数,在h3 = params[:id] 等rails 的苗条模板中。
参数是否自动转义或清理?
感谢您的帮助。
【问题讨论】:
这实际上取决于上下文,但总的来说,我会说直接在视图中渲染原始参数是一种反模式。参数确实是控制器的关注点。我想不出你想要在没有一些初步处理、验证或清理的情况下在视图中呈现原始参数的情况。
参数(连同任何其他值)将在视图中进行 HTML 净化,但请记住,用户可能可以在此处提供他们想要的任何值,因此值得问问自己这可能导致哪些漏洞或边界条件。
最后,虽然这不是绝对规则,但我强烈认为主 ID 应该仍然是数据库的关注点。在某些情况下,将它们暴露给用户或外部世界可能会有风险。原因是如果主键是自动递增的(通常是这样),那么您正在泄漏有关数据库的信息(例如,有多少条记录)。在这种情况下,可能值得隐藏或散列主键。
【讨论】: