-4

就像你们很多人都知道,javascript函数或方法可以通过浏览器地址栏运行。我想通过我应该使用什么样的概念来防止这种情况发生,当它在地址栏中运行并且不起作用时,用户可能不知道我的函数参数必须进入什么!?

我想使用一个类似于 twitter-follow-button 的概念。但是,如果人们知道特定的事情(id、日期等),他们可以通过获得更多的追随者和东西来破解它。我只希望它在被点击时运行。

使用程序:PHP、jquery、css,所以示例可以基于以上。

任何帮助appriciated。提前致谢。

4

3 回答 3

2

javascript函数或方法可以通过浏览器地址栏运行。我想防止这种情况发生

你不能。

我想通过我应该使用什么样的概念来防止这种情况发生,当它在地址栏中运行并且不起作用时,用户可能不知道我的函数参数必须进入什么!?

您可以混淆代码,但这不会阻止它被逆向工程或简单地重写。重要的是 HTTP 请求,而不是产生它们的 JS。

我想使用一个类似于 twitter-follow-button 的概念。但是,如果人们知道特定的事情(id、日期等),他们可以通过获得更多的追随者和东西来破解它。

您需要在服务器上验证是否允许发出请求的用户发出请求。在该特定情况下,您可以使用当前登录用户的会话数据来确定哪个用户成为关注者。

您还应该实施CSRF 保护,以便其他站点无法将用户转发到您的站点。

您不能轻易阻止 Malory 向 Alice 提供一些 JavaScript 以将其放入将发出请求的地址栏中。那是一种社会工程攻击。不过,浏览器现在正在实施针对它的保护(例如,从地址栏中阻止 javascript: uris 并让人们改用开发人员工具)。

您可以实施速率限制,以便脚本无法让用户在短时间内关注 10 个人。

您可以让请求是一个需要对不同子域的整页请求,并让该子域将确认请求拉回原始服务器。由于用户必须与来自两个主机名的数据进行交互,因此单个粘贴的脚本将无法完成整个过程(因为存在同源策略)。不过,这可能是矫枉过正。

于 2012-07-24T19:57:36.890 回答
0

简而言之,按照你描述的方式,这是不可能的。

于 2012-07-24T19:57:32.710 回答
0

我认为您最好的方法是避免将任何变量添加到全局范围。

全局无法访问的内容将无法从页面、地址栏等上的匿名函数访问。如果无法将脚本注入您的页面,您应该是非常安全的。

除此之外,我不相信有办法阻止用户在地址栏上运行脚本。

于 2012-07-24T19:53:36.290 回答