jQuery(userInput)对最终用户来说是否“安全”

Is jQuery(userInput) "safe" for end-users?

本文关键字:是否 安全 用户 userInput jQuery      更新时间:2023-09-26

我正在开发一个小的jQuery选择器游戏。本质上,你会得到一些HTML代码,你必须编写jQuery选择器来选择突出显示的项目。

例如,假设您有:

<body>
  <p id="winner">Select this paragraph</p>
  <p> But not this one </p>
</body>

正确的选择器之一是 $('#winner')

我目前计划在"$(' ...') "(...'s 所在的位置)并执行以下操作:

var userInput = ...
var userSelectedItems = new Array();
userSelectedItems = $(userInput)
// Check if userSelectedItems == the array of elements supposed to be selected
// Change screen to green and allow users to press enter and continue to next challenge.

现在,我知道如果你允许用户直接输入一些PHP或其他东西,可能会发生各种不好的事情,但是本质上允许用户输入/执行这种javascript命令有什么吗?如果是这样,你建议我如何解决这种情况。我真的很喜欢制作这个教育游戏,所以任何帮助都非常感谢。我真的看不出它有任何危险的方式,因为它都在客户端计算机上运行,对吗..?我不知道,也许我错过了什么

谢谢

如果您允许用户使用其他用户的 Javascript,可能会出现安全问题,但是如果唯一执行代码的人是输入代码的人,那么您应该没问题。

客户端上的任何内容总是容易受到最终用户所做的更改的影响。

但是,如果您没有将任何信息保存到数据库中,并且该游戏没有任何竞争条件,我不会担心可能出现的任何安全问题。您始终可以在自己的 Javascript 中清理客户端输入,以确保非技术用户在此过程中不会更改游戏状态。

它与Javascript没有什么不同,唯一的漏洞是如果有人能够将一些代码注入您的应用程序或数据库,从而显示您的Web服务器上提供的内容。 只要你的应用程序受到 XSS 和 SQL 注入的保护,你应该没问题,这将是相同的概念。