Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是jQuery(userInput)";“安全”;对于最终用户?_Javascript_Jquery_Security - Fatal编程技术网

Javascript 是jQuery(userInput)";“安全”;对于最终用户?

Javascript 是jQuery(userInput)";“安全”;对于最终用户?,javascript,jquery,security,Javascript,Jquery,Security,我正在开发一个jQuery选择器小游戏。本质上,我们给了您一些HTML代码,您必须编写jQuery选择器来选择突出显示的项 例如,假设您有: <body> <p id="winner">Select this paragraph</p> <p> But not this one </p> </body> 现在,我知道如果你允许用户直接输入一些PHP或其他东西,各种不好的事情都可能发生,但是本质上允许用户输入/执行这

我正在开发一个jQuery选择器小游戏。本质上,我们给了您一些HTML代码,您必须编写jQuery选择器来选择突出显示的项

例如,假设您有:

<body>
  <p id="winner">Select this paragraph</p>
  <p> But not this one </p>
</body>
现在,我知道如果你允许用户直接输入一些PHP或其他东西,各种不好的事情都可能发生,但是本质上允许用户输入/执行这种javascript命令有什么好处吗?如果是这样的话,你建议我如何避免这种情况。我非常喜欢制作这个教育游戏,因此非常感谢您的帮助。我真的看不出它有什么危险,因为它都是在客户端的计算机上运行的,对吗。。?我不知道,也许我错过了什么


谢谢

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

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

客户端的任何东西都会受到最终用户所做更改的影响


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

仅供参考任何现代浏览器都允许您在任何站点上运行任意Javascript。点击F12并转到控制台;p这个问题以前已经被问过无数次了。可能有一些线索在搜索“eval javascript”。然而,要让jQuery(输入)做一些“不工作”之外的事情需要一些工作;大多数普通用户甚至都不会遇到这种情况。Re
userSelectedItems=$(userInput)
:我会先做一个预检查,确保jQuery不会将输入视为HTML字符串,而不是选择器。(由于
$
函数以大约八种方式重载,并根据您提供给它的内容执行不同的操作,包括根据您提供给它的字符串的内容执行不同的操作。例如,
$(“#foo”)
是一种查找,
$(“”)
创建一个
div
。Epic API设计失败,但我们都会出错。)最简单的方法是使用jQuery的代码来做出决定。FWIW,我可以使用Firebug或Chrome中的控制台在您的页面上运行我想要的任何jQuery。所以,我不会太在意它。无论能否创建
$(“”)
在您的上下文中是否构成漏洞,我建议您使用显式匹配选择器且没有其他隐蔽功能的调用。例如,
$('body')。查找(userInput)
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.