我在注册用户点击以通过.click()绑定执行给定操作的应用程序中使用jQuery,并且我希望此功能通过用户mousedown仅可用于。我的一位朋友今天指出,可以从Firebug(或类似的)中的JavaScript终端运行$(element).click(),并实现与单击该元素相同的功能 - 我想要的避免。有关如何去做这件事的任何想法?感谢您的输入。从外部访问保护jQuery功能
回答
简答:不,你不能真的阻止它。
龙答:喜欢click event
任何事件势必会这样叫Event handlers
。这些处理程序是functions
,它们在给定事件发生时执行。因此,如果你点击一个元素,你的浏览器会检查是否有任何event handlers
被绑定到它,如果是的话,它会fires
它们。如果没有,浏览器将尝试bubble up
事件到parent elements
,再次检查是否有任何event handlers
绑定这种事件..等等。
jQuerys
.trigger()
方法(如果你打电话给.click()
,你实际调用的方法)只是做同样的事情。它将特定事件称为绑定到特定元素的event handlers
。
编辑
可能有一些简单的方法来somekind的的soft detect
一个真正的点击,比如你可以检查一个event object
内toElement
财产。 triggered
时,该属性未设置。但是,再次,你可以很容易地伪造,以及.trigger()
。例如:
$(document).ready(function() {
$('#invalid2').bind('click', function(e){
alert('click\nevent.target: ' + e.toElement.id);
console.log(e);
});
$('#invalid1').bind('click', function(){
$('#invalid2').trigger({
type: 'click',
toElement: {id: 'Fake'}
});
});
});
工作例如:http://www.jsfiddle.net/v4wkv/1/
如果您只需调用$('#invalid2').trigger('click')
的toElement
财产不会在那里,因此失败。但正如你所看到的,你可以像event object
一样添加任何东西。
你想阻止什么?有人搞乱你的客户端脚本?你可以做一些事情,比如混淆你的代码,但除此之外别无他法。但即使这样做,只是让它更加麻烦,而不是我认为值得的。
如果您不希望人们做某些事情将功能移到服务器。
对不起,坏消息的持有者。
模糊处理似乎是一种可怕的方式,可以防止用户搞乱自己的javascript。如果有人真的想要完成所有工作的麻烦,那么为什么不让他们? – LandonSchropp 2010-07-23 06:29:41
@ helixed我同意。我说这是不值得的麻烦,但它是一个选项。我告诉他把它移到服务器上。 – spinon 2010-07-23 06:37:24
好点的人,但我担心的不是有人*可以自己调用它,而是他们可以将它编写成可以频繁运行的东西。我需要事件只发生在人类点击鼠标的频率上。 (是的,它在每次通话时与我的服务器通信。) – man1 2010-07-26 01:24:07
你不能对它做任何事情,也可以编写完整的函数然后再启动它。
但是,为什么这是一个问题?如果有人正在改变某些客户端,它只会影响他。还是你想检查一些数据?这必须始终在后端完成,因为您永远无法确定发送给它的是什么。
您可以检查事件对象(作为第一个参数传递给处理程序)originalEvent。 如果事件被模拟,它将是未定义的。点击()
但它是完全没用的。你不能使用JavaScript来保证安全性 - 客户端可以完全控制它(而萤火虫控制台就是最明显的工具)。客户端安全检查应该只提示用户并防止错误,恶意输入只能在服务器端停止。
- 1. 访问保护功能
- 2. 从外部文件访问功能bash
- 3. 如何保护外部访问?
- 4. 为什么要从外部类访问受保护的成员?
- 5. c#:从外部类访问受保护的类变量?
- 6. 为什么Python不能从外部访问子功能?
- 7. 使用.htaccess从外部保护文件,同时仍允许内部访问
- 8. 从功能外部访问本地变量
- 9. 无法从外部文件访问的JavaScript功能
- 10. Node.js不能从外部IP访问
- 11. VCR记录受临时访问令牌保护的外部API
- 12. 受保护字段外部包的Java访问控制
- 13. ParseObject()保护访问
- 14. 由于其保护级别而无法访问功能
- 15. c#功能由于保护级别而无法访问
- 16. 不能访问外部svn
- 17. 从外部脚本中保护websocket
- 18. 从外部使用保护DLL
- 19. 访问冲突在功能访问阵列(内部功能)
- 20. 无功不在功能测试外部访问后台块
- 21. 尝试从类外调用受保护的功能
- 22. 不能访问受保护的特性
- 23. 当使用Apache从外部IP访问时,密码保护目录
- 24. 从外部服务器(Java,Groovy)访问登录受保护的页面
- 25. 保护从功能文件的URL
- 26. 保护SVN的外部
- 27. 保护外部JS文件
- 28. CakePHP:是否可以从控制器访问受保护的功能?
- 29. 从外部访问OlExchangeStoreType Outlook
- 30. 从外部类访问TextView
这是关于你认为这可能是可能的。你应该阅读更多关于安全性和开发过程。 (哦,我给你+1) – rook 2010-07-23 07:09:55
任何推荐阅读?谢谢! – man1 2010-07-26 01:21:16