首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用PHP将字符串与大型文本文件进行比较(或...数据库?)

使用PHP将字符串与大型文本文件进行比较(或...数据库?)
EN

Stack Overflow用户
提问于 2018-06-08 04:29:35
回答 2查看 220关注 0票数 -1

我有一个PHP7登录系统,我正在努力提高密码的安全性。我已经下载了大量的(15 15!)https://crackstation.net/buy-crackstation-wordlist-password-cracking-dictionary.htm上的单词列表。我想对其进行设置,以便当用户尝试设置新密码时,将其与单词列表进行比较,如果在列表中找到,则拒绝该密码。

我不知道如何在PHP中打开这么大的文件并遍历它而不会遇到内存/资源问题。有人能帮我找到一种有效的方法来检查这么长的列表中的字符串吗?

(如果有帮助,我也有一个MySQL数据库,不过我相信我更喜欢将列表作为文本文件保留。)

更新:我想这会涉及一些类似于排序例程的逻辑,以避免逐行遍历整个列表?也就是说,如果密码以"z“开头,我应该直接跳到”z“...

EN

回答 2

Stack Overflow用户

发布于 2018-06-08 04:34:04

Crackstation提供了一个PHP库,用于创建索引和查找值。请参阅此处的说明:https://github.com/defuse/crackstation-hashdb

查找是通过LookupTable类完成的:https://github.com/defuse/crackstation-hashdb/blob/master/LookupTable.php

您还可以使用PHP对CrackLib数据文件的支持:

$dict = crack_opendict('/path/to/my_dictionary') or die('Failed to open file');
$check = crack_check($dict, $somePassword);
echo crack_getlastmessage();  // e.g.: 'weak password'
crack_closedict($dict);

如果您的数据不是这些格式中的一种,则需要为您的数据集创建一个索引,以提供高效的查找。有几个命令行工具可以为您做这件事,比如SWISH++

票数 3
EN

Stack Overflow用户

发布于 2018-06-08 04:54:00

我认为最好是想出一个限制和评估模式,它将产生一个强密码,并找到一种方法来防止在您的系统中使用这样的列表,比如限制相同ip的登录尝试,如果总尝试次数超过规范,则会发出警报,因为列表可能每天都会变化和增加。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50749722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档