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

时间:2012-07-06 16:36:37

标签: javascript jquery security

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

例如,假设你有:

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

其中一个正确的选择器是$('#winner')

我目前打算抓住“$('...')”中的字符串(......的位置)并执行以下操作:

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命令吗?如果是这样,你怎么建议我解决这个问题。我非常喜欢制作这款教育游戏,所以非常感谢任何帮助。我真的看不出它有什么危险,因为它都是在客户端的计算机上运行的。我不知道,也许我错过了什么

由于

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

客户端的任何内容总是容易受到最终用户的更改。

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

答案 2 :(得分:0)

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