php - preg_replace 密码过滤器

标签 php regex filter passwords preg-replace

对于 PHP,我想对密码使用 preg_replace() 过滤器,这样密码中唯一可用的字符是 US ASCII 可键入字符,减去控制代码和 NULL。

实现我可以插入 preg_replace() 的 RegEx 是什么?

编辑:

我被建议编辑这个问题,因为我现在“明白了”并且不会使用这种非常不受欢迎的技术并且将允许任何可键入的字符,即使是我键盘上可能没有的字符,只要它们不是控制代码。

最佳答案

正如其他人所说,不要限制密码中允许的字符集。仅仅因为您的 键盘上没有 ä、å 或 ö 没有理由阻止我们这些有它们(或无论如何知道如何键入它们)的人使用这些字母。无论如何,您都会将密码存储为加密散列(或至少作为加密字符串),不是吗?如果是这样,那么您的数据库是否可以成功/安全地存储密码中的实际字符并不重要,只有您的加密算法输出的字符。 (如果不是,那么以明文形式存储密码是一个比密码可能包含或不包含哪些字符更大的问题 - 不要那样做!)

您的明显意图是通过默默地删除您不喜欢的字符而不是告诉用户“再试一次,这次只使用这些字符:a、e、i、o、u”来强制执行字符集限制。使您提出的方法真正残酷,因为这意味着如果我尝试使用密码 fäîry (不是非常安全,但应该可以抵御轻量级字典攻击),我的实际密码,未知me, will be fry(如果你的密码是一个三个字母的单词,直接从字典中提取并且经常使用,你甚至可以不用费心)。哎哟!

关于php - preg_replace 密码过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054928/

相关文章:

regex - 使用 GTM 在一个容器中实现两个 Analytics 属性

regex - 使用正则表达式过滤匹配模式

CSS3滤镜模糊关键帧动画

php - 如何从导出的 csv 文件中删除双引号

javascript - 使用 Javascript 将 PHP 变量转换为 HTML 文本框

php 向下舍入 5 分钟时间

regex - 用 Varnish +正则表达式替换页面中的内容

javascript - jQuery 检索哈希并将其用作 ID

sql - 基于非字母首字符过滤 SQL 查询

php - 仅选择有积分的网站