当我开发Wave Framework时,我非常关注API请求的安全模型。我必须确保可以在任何可能的地方通过HTTP进行API请求,同时防止潜在的中间人攻击,数据篡改等。
我最终基本上从输入数据构建了一个GET字符串,并在使用API配置文件密钥对其进行盐析时从中生成SHA-1哈希。这非常有效,并且可以根据需要保护API。
但我的API还允许通过HTTP上传文件等内容。目前我完全忽略了文件上传相关数据(我将其用于缓存签名,但不用于数据验证)。这意味着恶意中间人可以在技术上更改文件内容。
还有其他选择吗?当我在服务器端发送文件时(例如计算文件内容作为验证哈希的一部分),我当然可以实现这一点,但如果上传是通过网络浏览器并通过JavaScript启动,那么这不是一个选项吗?
其他框架如何处理此问题?我试过搜索但找不到足够的信息。谢谢!
答案 0 :(得分:0)
如果我理解正确,您的框架会创建一个用户可以上传文件的网页。在这种情况下防止中间人的唯一方法是使用ssl。
请记住,在这种情况下,中间人也可以在上传数据时更改用户正在与之交互的网页。假设您创建了一个javascript,它以某种方式使用用户输入的密码加密文档。中间人可以轻松更改javascript以加密他的假文档并丢弃真实文档。
如果安全性是Web上的问题而您需要防范中间人,则需要SSL。没有其他办法了。