繁体   English   中英

计算困难的 [JavaScript] 问题?

[英]Computationally difficult [JavaScript] problem?

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

是的,我知道他可以使用 Rhino 或其他一些 JS 引擎来做——这就是为什么我希望它在计算上是昂贵的,所以他需要几个小时来设置,他的机器需要几秒钟来伪造每次访问。

我想在后端获得一堆大素数并发送其中两个的乘积并要求网页因素它,但如果有人有更好的想法,我会全神贯注。 另外,有没有人有一个很好的库来做那个分解的事情?

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

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

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

巧妙的方法。 每当需要单向复杂性时,我都会想到 hash。 只需 hash 用户帐户的某些方面(不是任何敏感内容),然后将 hash 发送给客户端。 您可能希望截断/填充字符串以获得所需的复杂性级别。 这不是为了保护帐户,因此 md5 或任何其他散列算法都可以。

下面是一些示例代码,您可能可以在客户端使用它们。

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

这样做的问题是,如果已知它是 NP-Hard,那么在非平凡的情况下,人类也很难解决它。 视觉/听觉验证码有点酷,因为它们可以帮助人们……我们有非常复杂的感觉器官来处理这些事情,而计算机不太擅长它(尽管它们一直在变得更好。 )。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM