服务器/客户端验证?

3
我们正在考虑创建一个程序,向服务器端程序发送POST请求进行一些处理。我们想考虑一些验证方式,以确保POST请求不是随机垃圾邮件发送者试图压垮我们的系统或其他什么东西。我对这方面并不是很了解,但我认为客户端可能会发送日期数字和“加密”的日期数字(不是安全加密,只是使用一些特殊算法)。然后,服务器将加密日期数字并解密客户端加密的日期数字。如果加密日期数字或解密日期数字任何一个不匹配,显然它不是来自我们客户端的请求,因此服务器将不会对请求采取行动。
就像我所说的,我对这方面并不是很了解。我这样做对吗?有更好的方法吗?如果这是一个可以接受的方法,那么我应该去哪里寻找“加密”算法?(我找到的大多数算法都是用于安全加密,只能在同一台机器上解密。我并不太关心安全性 - 我只是在寻找验证方法)。
非常感谢您的帮助。
PS:我不确定这是否是重复的问题,因为我不知道该搜索什么。我找不到其他关于此的问题,但这并不意味着没有其他问题。
编辑: 为了澄清,服务器代码应尽可能“插入即用” - 例如,如果可以使用纯PHP或ASP.NET而不是搞乱服务器配置,则会更好。客户端也是如此。请记住,这不必是安全的,我们只是试图防止垃圾邮件发送者POST随机数据一百万次。
3个回答

1

我们需要支付费用才能获得“已验证”的证书吗?还是使用“未经验证”的证书也可以?或者我完全误解了? - NickAldwin
它可以使用自签名的CA工作。但客户端还必须信任服务器证书。如果您的客户端是“普通”浏览器,则用户将至少需要添加您的证书一次。是否可行使用自签名证书取决于您的“客户端”-应用程序以及人类 :-) - VolkerK

1

尝试使用加密随机数

  1. 在发起POST请求的页面上,生成一个随机数,并将其与请求的IP地址和到期时间(15-30分钟?)一起存储在数据库中。
  2. 相同的随机数被存储为POST变量。
  3. 在POST时,为了进行处理,在到期时间之前必须成功查找匹配的随机数和IP地址。

结合蜜罐验证码,可以很好地防止机器人对您的系统造成压力。


那听起来是个很好的策略;然而,我们正在考虑直接执行POST请求,而不需要一个“启动”页面(因为这将在程序后台全部处理)。但蜜罐验证码肯定会有所帮助。 - NickAldwin

0
通常解决这类问题的方法是包含一个HMAC。它通过使用秘密密钥允许完整性检查和发送者身份验证。

嗯,这看起来很有前途。我会研究一下的。 - NickAldwin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接