gpt4 book ai didi

javascript - 当数据源安全时可以使用 eval() 吗?

转载 作者:行者123 更新时间:2023-11-28 19:31:37 24 4
gpt4 key购买 nike

很多人似乎对使用 eval() 的概念感到害怕。我完全理解 XSS 攻击和随之而来的安全问题。但是,使用 eval() 解析通过 HTTPS 从您自己的服务器获取的、由服务器保证有效且不包含用户生成的数据的 JSON 文档是否不好?

最佳答案

正如其他人在评论中所说,使用 JSON 解析器(例如大多数浏览器内置的 JSON.parse())来解析 JSON。虽然 JSON 与 JavaScript 兼容,但它们不是同一件事,并且有不同的用途。

我想更笼统地回答您的问题,因为我看到很多人在刚刚开始时都有这样的想法:

However, is it bad to use eval() [...] does not contain user-generated data?

如果您正在编写将数据从一层传输到另一层,或者从一个系统传输到另一个系统的代码,那么通过正确的封装来实现这一点绝对至关重要。任何时候您发现自己将数据命令混合在一起,您应该特别小心,使数据正确转义,这样它就不会出现歧义,并且不会与命令混淆。

安全并不是注入(inject)的唯一问题。无论是否有人试图利用它,问题都存在。您很可能会得到一些包含引号的数据,或者一些您没有预料到的值。您的代码应该像处理数据时一样透明。例如,如果您正在编写 ORM,则该 ORM 不应以任何方式修改数据。它应该只是确保它最终可靠地完整地到达它应该到达的地方。

我看到很多人一直在使用 URL 中的数据。人们通常会按原样将数字 ID 号连接到 URL 中而不进行转义。我问他们...您确定您的 ID 始终是数字并且永远不会包含保留字符吗?如果有一天有人想在不同的上下文中重复使用您的代码怎么办?

关于如何使用某物的假设通常是错误和安全漏洞的根源,它们实际上是相同的来源之一。

关于javascript - 当数据源安全时可以使用 eval() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26661528/

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