ajax与常规表单数据的安全性

时间:2013-07-22 19:38:11

标签: javascript ajax forms

只是想知道

的安全性差异
<input type="hidden" name="id" value="<?php echo $id; ?>">

VS

jQuery(this).ajaxSubmit({
data: { id: '<?php echo $id; ?> }
});
发送表单数据时

一种方法比另一种方法更容易受到黑客攻击吗?安全发送表单数据的最佳方法是什么,以便外人不能篡改或更改ID号?

3 个答案:

答案 0 :(得分:6)

安全性没有区别。在这两种情况下,都会向服务器发送HTTP POST请求,并从服务器收到响应。除了请求中的某些标题之外,服务器甚至不知道或关心两者之间的区别。

为了说明,在提交常规表单POST和AJAX POST时,请查看浏览器调试工具(Firebug或Chrome工具)中的网络请求。两者非常接近相同,除了浏览器可能会为AJAX添加另一个或两个头。

  

安全发送表单数据的最佳方法是什么,以便外人无法篡改或更改ID号?

没有。任何精明的用户都可以手动制作HTTP POST请求以包含他们想要的任何数据。如今,浏览器甚至还提供了方便的工具来帮助实现开发和调试。一般规则是服务器端代码从不隐式信任从客户端发送的请求。始终验证用户是否有权访问他们正在尝试执行的操作,数据不是恶意数据或在使用之前已正确清理(特别是在数据库查询中作为常见示例),等等。

答案 1 :(得分:2)

从安全角度来看,基本上没有区别。在这两种情况下,某人看到id是微不足道的,在这两种情况下,某人构建自己的API请求是微不足道的。

使表单安全的方法是确保始终在服务器上验证所有内容。虽然在客户端添加表单验证之类的东西可以带来更好的用户体验,但这不是安全性。您应始终假设您的服务器可以在请求中接收无效和恶意数据并将其考虑在内。

答案 2 :(得分:1)

Form vs AJAX没有什么区别。有什么区别的是你使用GET或POST,以及你是使用HTTPS还是HTTP。

如果您不希望数据被篡改,则应使用HTTPS和POST而不是GET或非加密的HTTP POST。有关GET与POST的比较,请参阅this。 Get将创建一个查询字符串,它是URL的一部分,其中包含数据,即使您使用的是HTTPS,嗅探器也可以看到URL。

如果你使用POST,发布的消息包含你的数据,所以嗅探只会看到URL,它不会显示ID,但他们将无法看到ID被发布到服务器,所以他们可以'发脾气。