计算难度[JavaScript]问题?

时间:2011-07-13 20:19:48

标签: javascript complexity-theory

我需要一个计算困难(在任何语言中)的问题,我可以在JavaScript中轻松实现。我正在尝试进行类似CAPTCHA的测试,以防止黑客机械地访问我的页面。

是的,我知道他可能使用Rhino或其他一些JS引擎并且这样做 - 这就是为什么我希望它计算成本昂贵,所以需要花费几个小时来设置和他的机器几秒钟就可以假装每次访问。

我认为在后端获得一大堆素数并发送其中两个的产品并要求网页因素,但如果有人有更好的想法,我会全力以赴。还有,有没有人有一个很好的图书馆去做那个保理事情呢?

4 个答案:

答案 0 :(得分:2)

您可以使用与比特币相同的方法,即。扭转安全哈希。

在这里解释: http://www.tomshardware.com/reviews/bitcoin-mining-make-money,3514-3.html

比特币来源 https://github.com/bitcoin/bitcoin

答案 1 :(得分:0)

您可以实施标准验证码,并在客户端进行更多检查。例如,在验证码输入文本上添加一个事件监听器,以监听按键/按键事件和xor键码,并将它们与验证码一起发送。在名为email的表单中添加隐藏的输入文本或在每个表单上找到的内容。机器人自动填满。如果你得到post ['email']的值,那么它就是一个机器人,因为用户不会看到它。你也可以在一个完全不相关的javascript中拥有一段代码,这些代码会自动在表单中添加一个验证所需的字段。所以...验证码没有验证码,你仍然可以增强机器人保护客户端,而无需计算困难的过程。

答案 2 :(得分:0)

这个问题在于,如果知道它是NP-Hard,那么在非平凡的情况下解决人类的后方也会是一种痛苦。视觉/听觉验证码有点酷,因为它们让人们站起来......我们有非常复杂的感觉器官来处理这些事情,而电脑也不是很擅长(尽管它们一直在变得越来越好! )。

因此,你可能最好提出一个人们可以很容易做到的独特事物,但机器并不太擅长。例如,给一些简单的黑白图片,并询问用户哪一个不属于,或者展示一些食物图片,并询问你可以用它们制作什么样的食谱。

答案 3 :(得分:0)

聪明的方法。每当需要单向复杂性时,它就会让我想到哈希。只需哈希其用户帐户的某些方面(不是任何敏感信息)并将哈希值发送给客户端。您可能希望截断/填充字符串以获得所需的复杂性级别。这不是为了保护帐户,所以md5或任何其他哈希算法都没问题。

以下是您可能能够为客户端利用的一些sample code