2010-01-13 143 views
3

我目前工作的地方我用锚用jQuery提交表单这样一个网站:安全,危险使用锚时,而不是提交输入

$("a[title=submit]").click(function(){ 
     $(this).parents("form").submit(); 
     }); 
}); 

然而I've read,使用链接这种方式是不好的实践,安全明智。

有人知道问题是什么吗?

+0

我认为他们可能会混淆'''GET'。用“GET”而不是“POST”“发布”表单确实是危险的。但这不是你的代码所做的。 – 2010-01-13 14:50:43

+0

@克雷格 - 这肯定只是通过安全连接的情况?由于POST数据是以HTTP头中的纯文本形式提交的,因此对于像GET数据一样的用户而言,它是不可见的。 – Graza 2010-01-13 14:53:52

+1

这不仅仅是知名度问题。 'POST'旨在修改服务器状态;因此存在一定的限制(例如,当您在F5上使用'POST'时发出的警告),以防止用户意外执行此操作。也考虑http://thedailywtf.com/Articles/The_Spider_of_Doom.aspx – 2010-01-13 15:37:18

回答

4

这是不好的做法,但“危险”与安全无关。

使用脚本辅助链接来提交表单而不是仅仅提交一个提交按钮不必要地让你的表单需要JavaScript(所以它不会工作,因为JS不可用或由于其他错误而中断),并使链接在“新窗口中打开”和“书签链接”等功能不合适,不适用于表单提交。

使用正常的input type="submit"按钮。如果你真的想让它看起来像一个链接出于某种原因,例如它的样式,例如:

input.linklike { 
    color: blue; text-decoration: underline; 
    border: none; padding: 0; 
    width: auto; overflow: visible; /* hack for IE */ 
} 
4

这没有任何安全问题,因为每个人都可以使用Firebug或其他工具在本地机器上操作html/js/css代码。请记住,您的表单应始终由服务器(后端)验证。

+0

我不会说没有安全问题,但我同意它不是比传统表单提交更安全。 – 2010-01-13 14:49:24

1

没有安全问题,但它可能不适用于所有用户。

Javascript可能被关闭(在这种情况下,您根本无法提交),或者安全插件可能会在脚本错误地检测到后脚本为恶意脚本时阻止该脚本。

如果javascript关闭,您应该确保页面仍然可用。也许在html中渲染提交按钮,然后使用jQuery删除按钮并插入锚点。这样,如果javascript正常工作,你会得到你的锚定提交,但如果不是,你仍然会得到你的提交按钮

+0

没错,这不是一个安全问题,而是一个可访问性问题。表单应该有一个提交按钮,而不仅仅是一个提交链接。 – 2010-01-13 14:51:03

相关问题