gpt4 book ai didi

javascript - 将 Auth 用户从 PHP/Laravel 传递到 JavaScript

转载 作者:行者123 更新时间:2023-11-30 19:22:07 25 4
gpt4 key购买 nike

在一些 SO 答案中建议使用以下方法作为将经过身份验证的用户详细信息从后端 (PHP/Laravel) 传递到前端 (JavaScript/Vue) 的方法。不过,我想确认一下它的安全性。

<script>
window.App = {!! json_encode([
'user' => Auth::user()
]); !!};
</script>

假设详细信息确实包含用户生成的输入(如姓名和用户名),使用这种方法将经过身份验证的用户详细信息传递给 JavaScript 是否存在任何安全隐患? JavaScript 代码能否安全地处理此数据以授权用户操作和/或将任何此数据输出为 HTML?

或者用户在注册期间可以在名称/用户名字段中输入任何可能破坏此代码/造成安全问题的内容吗?在将 json_encode() 的输出传递给 JavaScript 之前对其输出进行清理有什么好处吗?

编辑

例如,假设我从服务器获取此数据,使用 json_encode() 将其传递给 JavaScript,然后使用 JavaScript 在 HTML 中输出用户名。如果允许用户在注册期间在名称字段中输入任何内容(最多一定的字符限制),是否可以以任何方式利用此漏洞?

最佳答案

“JavaScript 代码能否安全地处理此数据以授权用户操作”- 永远不会,因为它是客户端的,并且根据定义不在您的控制之下。授权在服务器端完成。

“或者用户在注册期间可以在名称/用户名字段中输入任何可能破坏此代码/造成安全问题的内容?” - json_encode转义字符,以便您拥有的输出 JSON 的任何数据都是有效的。

“将任何这些数据输出为 HTML?” - 不。您需要为 HTML 输出清理数据json_encode不知道 HTML 是什么。

“在将 json_encode() 的输出传递给 JavaScript 之前对其进行清理有什么好处吗?” - 这不是在语言层面决定的,而是在应用层面决定的。如果允许用户输入任何字符,那么您有责任确保他们无法以恶意方式利用该字符,因为只有您知道应用程序如何使用该数据。

“但是,我想确认一下它的安全性。” - 它与您了解在不同上下文之间传递数据的含义一样安全。在这种情况下,您传递的数据在服务器端上下文中是“安全的”,但在传递到客户端上下文时未经检查可能不“安全”。

TLDR:在不知道您正在使用这些数据做什么的情况下,没有人能给您满意的答案。只需将其作为 <script> 插入响应中会很安全。根据您的处理方式,在客户端使用所述数据可能不安全。

这里有一个例子说明为什么清理数据是不好的:https://jsfiddle.net/v7pxn48j/如您所见,JSON 没有任何问题,但将其中一些解释为未净化的 HTML 是错误的。

关于javascript - 将 Auth 用户从 PHP/Laravel 传递到 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57334435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com