是否有一种方法可以在Ajax中安全地发送信息
Is there a way to securely send information in Ajax?
我目前正在开发一个基于HTML+JS的应用程序,几乎完全基于ajax连接(使用jQuery.ajax()
调用来简化这个过程)。
我正在考虑不使用HTTPS(至少在这个时候)进行安全呼叫的最佳实践。我现在付不起证书的钱)。
在这一点上,我唯一关心的是注册和登录步骤。也许登录更容易一些。我想到发送用户名和时间戳,然后使用用户的密码对它们进行加密。因此,通过这样做,我不会发送任何密码(像OAuth一样保持秘密)。服务器应该检查用户,使用密码解密,并将接收到的时间戳与解密结果配对。服务器应该将nonce类数字保存到数据库中(以避免重复攻击),然后返回给用户另一个唯一id(用用户的密码加密)。此时,用户应该开始使用该密钥加密他的所有信息(可能还有另一个nonce)并将其发送到服务器。如有错误或漏处,请指正。 对我来说最大的问题是注册。我不能用常规密码加密信息,因为如果我在javascript中这样做,任何人都可以知道密码。如果我提供临时生成的密码进行加密,并将其从服务器发送到客户端,任何嗅探器都可以获得它并使用它来解密信息。我知道HTTPS可以在这一点上拯救我的生命(也许这是唯一的解决方案),但在这一点上我不能使用它。
是否有其他解决方案,或者我应该等到我可以使用HTTPS?请记住,如果我能跳过等待,那就更好了。谢谢伴侣!
简短的回答:你不能没有HTTPS
更长的回答:如果你试图在没有HTTPS的情况下这样做,你会发现自己试图复制HTTPS设计的所有功能。您可以在某个点上达到,但相信您将成功实现HTTPS提供的1%是不现实的。您将获得的唯一好处是一个模糊的安全机制(通过模糊实现安全),对于非关键系统可能还可以,但在真正的关键情况下可能会惨败。
您可以创建自己的证书,然后像使用常规HTTP调用一样使用Ajax。唯一的缺点是用户将得到一个警告消息。
使用SSL证书是唯一的方法,如果你在javascript中加密它,任何人都可以读取代码并解密它。
http://www.startssl.com/- 在服务器上生成公钥/私钥对,以及随机生成的salt。
- 将密钥对和salt附加到用户会话对象。
- 向客户端代码发送公钥和盐。
- 使用公钥和盐对AJAX请求进行加密
这不是一个简单的任务。您可能会发现,直接购买证书更便宜、更有效。
EDIT:这也意味着所有常规HTTP流量(HTML,图像,CSS等)都以明文方式发送。这可能是一个问题,因为它可能允许窃听者间接地知道用户在做什么。
我想你应该看看:
http://assl.sullof.com/assl/项目描述如下:
aSSL是一个在MIT许可下发布的库,实现了类似SSL的技术,但没有HTTPS。
aSSL允许客户端使用RSA算法与服务器协商一个秘密的随机128位密钥。一旦连接建立,数据将使用AES算法发送和接收。
aSSL由一些Javascript文件和一个服务器端组件组成。因为我最近将协商算法从RC4更改为RSA,所以目前只有一个纯Javascript (ASP)服务器组件可用。一旦库通过测试阶段,我将尽快为主要的web语言(PHP, Java, Perl, Python, TKL等)进行移植。
- 关于ajax的安全问题
- 基于PHP的API AJAX-创建对API的安全访问
- 使用Ajax提交表单是否安全
- 如何使我的ajax请求更安全
- 如何使 Ajax 发布到 Handler.ashx 安全并停止直接调用处理程序
- 未阻止跨域 AJAX 请求:这是安全漏洞吗?
- AJAX 跨域安全背后的基本原理是什么?
- Ajax 回调断点安全问题
- Ajax是否像HTTP请求一样安全?
- 使用嵌入式 JS(CORS+AJAX 请求)跨域安全登录
- Django 和 Ajax Push Engine (APE):不安全的 JavaScript 尝试使用 URL 访问框
- 使用 php ajax jquery 从 mysql 发送或获取数据 - 什么是安全方法
- 将日期参数传递给 MVC 操作的 ajax 调用的安全方法
- Yesod:在 AJAX 调用中使用类型安全的 URL
- 在PHP和Ajax中构建安全测验的好方法
- 这个 Ajax 登录系统是否足够安全
- 如何使用跨域AJAX调用保护ASP.NET Web API的安全
- 使用ajax加载post数据,并且在源中显示类别ID是不安全的
- 简单的SSL-我需要做些什么来制作我的ajax'd登录SSL安全
- 如果不使用SSL,什么'这是向PHP页面发出AJAX请求的最安全的方法