35

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

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

通过模拟按钮单击,我的意思是,按下按钮并且按钮所在的表单使用与其关联的 php 代码运行。

逻辑告诉我 javascript 可以做到这一点,但我想确定,谢谢您的任何输入!

〜安德鲁

4

2 回答 2

63

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

<form>
    <input type="text" />
    <button>Do something</button>
    <input type="submit">
</form>

那么就可以打开调试控制台并输入

document.getElementsByTagName('button')[0].click();

这将单击按钮,或

document.getElementsByTagName('input')[1].click();

这将单击表单的提交按钮,或者只是

document.forms[0].submit();

在不单击按钮的情况下提交表单。

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

于 2013-06-28T19:09:32.023 回答
3

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

一旦您将页面交给客户,您就无法对其使用方式进行技术控制。

例如,您可以执行以下操作:

假设您正在制作 javascript 游戏。您使用 AJAX 将玩家的分数发送到服务器进行记录。在查看脚本后,恶意用户可以运行您的 AJAX 代码以发送 1,000,000 的分数,即使他们只赚了 5,000。

您无法阻止这种情况在 javascript 端发生。但是,应该有一些方法可以在服务器端对 AJAX 请求进行身份验证,您可能能够将安全“令牌”传递给黑客无法获得的 javascript。

于 2013-06-28T18:52:52.707 回答