Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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可以模拟按钮点击吗?_Javascript_Security_Macros - Fatal编程技术网

javascript可以模拟按钮点击吗?

javascript可以模拟按钮点击吗?,javascript,security,macros,Javascript,Security,Macros,我正在设计一个网站,如果允许宏自由运行,它将是有问题的 我已经想到了一种方法,通过模拟按钮点击的HTTP请求来停止宏,但是如果他们可以插入javascript脚本,只需“点击”按钮并像普通用户那样继续,这将是徒劳的 通过模拟按钮点击,我的意思是,按钮被按下,按钮所在的表单与相关联的php代码一起运行 逻辑告诉我javascript可以做到这一点,但我想肯定地知道,谢谢你的任何意见 ~Andrew您唯一能做的就是在服务器上验证请求 一旦您将页面移交给客户机,您就无法从技术上控制如何使用它 您可以做

我正在设计一个网站,如果允许宏自由运行,它将是有问题的

我已经想到了一种方法,通过模拟按钮点击的HTTP请求来停止宏,但是如果他们可以插入javascript脚本,只需“点击”按钮并像普通用户那样继续,这将是徒劳的

通过模拟按钮点击,我的意思是,按钮被按下,按钮所在的表单与相关联的php代码一起运行

逻辑告诉我javascript可以做到这一点,但我想肯定地知道,谢谢你的任何意见


~Andrew

您唯一能做的就是在服务器上验证请求

一旦您将页面移交给客户机,您就无法从技术上控制如何使用它

您可以做什么,例如:

假设你正在制作javascript游戏。您可以使用AJAX将球员的得分发送到 用于日志记录的服务器。查看脚本后,恶意用户可能会运行您的AJAX代码 即使他们只赚了5000英镑,也要发1000000英镑的分数


您无法阻止javascript端发生这种情况。但是,应该有某种方法在服务器端验证AJAX请求,您可能能够向javascript传递一个黑客无法获得的安全“令牌”。

可以通过编程方式始终单击按钮。例如,您可能有一些页面的表单如下:

<form>
    <input type="text" />
    <button>Do something</button>
    <input type="submit">
</form>
哪个将单击按钮,或者

document.getElementsByTagName('input')[1].click();
单击表单的“提交”按钮,或

document.forms[0].submit();
在不单击按钮的情况下提交表单


无法阻止用户在客户端上掌握JavaScript代码。您必须在服务器端添加一些验证,以防止不必要的用户操作。

宏是什么意思,是指在表单中注入javascript代码吗?或者你的意思是什么?是的,如果有人在我的网站上添加了自己的javascript,这可能会模拟我网站上的按钮被按下。我想知道他们是否能够这样做。他们将始终能够插入javascript来处理您的页面,包括发送http请求。您无法避免它。您可以向HTTP请求服务器端添加某些变量,这会使正确的HTTP请求难以发送。但你是说他们也可以使用javascript轻松点击我网站上的一个按钮?完全可以编写一个完整的web浏览器脚本,模拟合法用户可以采取的每一个动作。事实上,浏览器测试和可访问性工具通常都是这样做的。因此,最终您无法停止自动请求。你可以通过使用诸如速率限制和验证码之类的工具来降低它们的速度。我正在考虑使用一个服务器端变量,该变量会经常更改。变量是用户输入的salt,在您的分数示例中,他们有1000个分数,使用sha512加密,用服务器端变量对该数字进行salt,然后它知道期望的结果。如果代码正确,更新分数,否则不更新。显然,如果这都是php方面的内容,他们可以单击按钮提交分数,而不是更改分数。然而,我想这是不可能的,甚至提交他们的分数(在这种情况下),我想我是有点太有希望在这里,我将不得不解决与CAPTCHA,即使我想避免他们不惜一切代价:P我会给你竖起大拇指的努力虽然!当我开始使用移动应用程序时,我有时会利用ssh库来加密和保护数据传输,也许可以为您的情况做类似的事情……我必须更改
document.getElementsByTagName('input')[1]。单击()
文档。getElementsByTagName('input')[0]。单击()
document.forms[0].submit();