如何从浏览器控制台阻止.load()?

时间:2015-11-01 15:16:05

标签: javascript jquery ajax browser web

我想要在登录后动态加载我网站的某些内容。 $.post(...)与验证用户凭据的servlet交互,然后$.load(url)将内容从单独的页面加载到<div>。我注意到,只要我知道从哪里获取内容,我就可以从chrome javascript控制台强制执行此行为,绕过验证。

如何阻止用户这样做?

3 个答案:

答案 0 :(得分:5)

你做不到。

将文档传送到用户的浏览器后,它完全在用户的控制之下。他们可以运行他们喜欢的任何JS。

您在网络服务器上显示的网址是其公共接口。任何人都可以要求他们您可以使用身份验证/授权来限制获得响应的人员,但是您无法以运行您提供的特定JavaScript的用户为条件做出响应。

服务器需要授权用户每次传递受限数据。你不能这样做一次,然后相信浏览器强制执行它。

答案 1 :(得分:2)

您可以将秘密参数添加到您加载的网址中。通过在用户session(服务器端)或数据库中定义随机变量,然后在验证成功后返回此变量,以便您的javascript代码可以在下次加载调用中使用该变量。在加载URL中,您可以在服务器端检查secret参数是否具有正确的值。

希望清楚。

答案 2 :(得分:1)

简单的答案是:你不能

JavaScript在浏览器中运行,因此用户或应用程序可以随时运行自己的代码。这可以像添加新CSS或运行自己的JS代码一样简单。

您可以做的主要事情是确保在运行之前在服务器端验证所有请求,并且仅允许输入某些类型的信息(例如仅允许整数作为数字来阻止字符串到来通过)。

接近此类问题的是XSS或跨站点脚本。第三方将尝试将一些恶意代码注入受信任的网站,通常是某种形式的POST,以影响不同的用户。以下是有关此事的更多信息