小编Chr*_*ris的帖子

PHP注册:自动生成密码或让用户选择它

在注册过程中,我在讨论如何设置用户密码:

  • 让用户选择它.如果我这样做,我必须执行一些标准(长度,弱点,可能涉及正则表达式等).当你选择这种方式时,你通常做什么?为什么?有没有可用于PHP的库?

  • 自动为用户生成密码,并通过电子邮件将密码发送给他们提供的电子邮件.他们无法在没有获取密码的情况下登录,因此它也是电子邮件验证.问题是密码可能太难以让用户记住.如果我允许他们把它改成更容易的东西,那就首先打败了我为他们选择它的目的.我也担心在电子邮件中传输密码(作为简单的非散列密码)的行为.

我倾向于第二个,但在选择之前更喜欢更明智的答案.有可能我不关注用户便利性和其他技术问题.你是做什么?

编辑:根据答案,我将使用第一个选项,让用户选择.我的问题是,密码强度/长度等等.我应该要求,我该如何执行?有可用的PHP库吗?

php security passwords registration

4
推荐指数
1
解决办法
4150
查看次数

Ajax jquery同步回调成功

我有这个函数进行ajax调用.我在最后一段代码注释中描述了这个问题.

    function doop(){
            var that = this;
            var theold = "theold";
            var thenew = "thenew";

            $.ajax({
                    url: 'doop.php',
                    type: 'POST',
                    data: 'before=' + theold + '&after=' + thenew,
                    success: function(resp) {
                            if(resp == 1) {
                                    $(that).siblings('.theold').html(thenew);
                            }
                    }
            });

            // I have some code here (out of the ajax) that **further** changes 
            // the .theold's html beyond what it was changed inside ajax success
            // but the change depends on whether the resp (inside the success 
            // function) returned 1 …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery synchronous

4
推荐指数
1
解决办法
3万
查看次数

在字典攻击下密码是否弱

谢谢你的期待.所有真诚有用的答案都被投了票.

我使用密码强度计让用户知道他们选择的密码有多强.但是这个密码检查器显然没有涵盖字典攻击密码的弱点.我该如何检查,是否值得?

此外,我的常规密码检查器最初在浏览器中使用javascript运行(无需传输).如果我想检查字典攻击弱点,我必须将其传输到脚本.我的理解是我不应该明确地传达它.

有人可以帮我解决这个问题.如何检查密码在字典攻击下是不是很弱,如何在传输到我的脚本之前对其进行加密?

额外信息:

除了常规密码计之外,为什么我认为我还需要字典攻击检查?正如你们中的一些人所指出的那样,用户可以选择像P @ ssword或Yellow12这样的密码.但是我遇到的大多数密码强度检查器都将此视为一个好密码.至少我正在使用Yet Another Password Meter而且确实如此(我实际上认为它是更好的密码检查器之一.)如果有人知道更强大的密码检查器,请提及它,但前提是您确实根据经验知道它更强壮;)

但我的问题是:我如何对密码进行字典攻击检查?我在某个地方看到它是针对哈希做的,但我在哪里进行搜索?一旦我知道如何做到这一点,我将决定它是否值得.

感谢所有到目前为止帮助过的人:)

security encryption passwords dictionary brute-force

4
推荐指数
1
解决办法
2565
查看次数

Javascript Ajax优雅降级,具有不同的页面?

我开始更多地关注让我的javascript和ajax优雅地降级.更推荐哪个:

  • 努力将优雅降级纳入现有代码(可能很棘手)或
  • 为非js用户开发不同的页面集.

我倾向于不同的页面集,因为我觉得它更容易,我可以为每种用户类型(js-enabled或js-disabled)提供最佳结果.你同意我的意见吗,如果没有,你为什么不同意?

我也担心黑客攻击.例如,黑客进入启用js的版本,然后禁用他的js.关于这一点的任何想法?我不太了解黑客攻击,但如果我使用不同的版本,这可能是一个安全问题吗?

提前致谢

javascript ajax graceful-degradation

3
推荐指数
1
解决办法
472
查看次数

jquery获取最后一个输入字段索引

我在页面上有许多输入字段的"集合",如下所示:

<div id="allthesets">
   <div>
      <input name="po-3" type="text">
      <input name="ba-3" type="text">
   </div>

   <div>
      <input name="po-9" type="text">
      <input name="ba-9" type="text">
   </div>

   <div>
      <input name="po-123" type="text">
      <input name="ba-123" type="text">
   </div>
</div>

<div id="rightafterthesets">
   This is the div that comes right after the sets
</div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用jquery获得最大的索引(在本例中为123).请注意,每个集都在div中,但这些div没有唯一ID.但是所有的集合都包含在div中id="allthesets",div就在它之后id="rightafterthesets".由于最大的索引是最新的,我认为rightafterthesetsdiv可能有助于获得最后一个索引,如果我能以某种方式找出备份的方式.

indexing jquery input

3
推荐指数
1
解决办法
1万
查看次数

===存在于jquery中

我知道===PHP 中的运算符不仅意味着值相等,而且还意味着类型匹配

if (20 === "20") //false 
Run Code Online (Sandbox Code Playgroud)

如果我使用jquery,javascript中是否有类似的东西?示例代码也可以提供帮助.

谢谢

javascript syntax jquery

3
推荐指数
2
解决办法
2291
查看次数

PHP中的PDO,如何改进这个PDO mysql代码

谢谢你检查.所有有用的答案/评论都已经过投票.我有以下代码,它完成了这项工作,但是imo效率不高.我认为它不高效的原因是因为我使用fetchAll +循环,即使我知道查询将返回1或没有记录.

//assume the usual new PDO, binding, and execute are up here

$myval = "somevalue";

$res = $stmt->fetchAll(PDO::FETCH_ASSOC);

if (!$res) {
    //no record matches
    //BLOCK A CODE HERE
} else { 
    //found matching record (but always going to be 1 record, no more)  
    foreach($res as $row) {
        if ($myval == $row['val']){
            //myval is the same as db
            //BLOCK B CODE HERE
        } else {
            //myval is different from db
            //BLOCK C CODE HERE
        }
    }//foreach
}
Run Code Online (Sandbox Code Playgroud)

如何改进它以消除foreach和fetchAll的庞大外观(考虑到我知道它总是只有1或0记录)?但是我仍然需要类似的检查点,所以我可以BLOCK …

php mysql refactoring pdo

3
推荐指数
1
解决办法
939
查看次数

我应该允许2个字符的密码吗?

这可能听起来像一个无聊的问题,但安全领域的人会得到它.我应该让用户输入任意数量的字符,只要它大于0个字符.我的逻辑是:

  1. 无论如何,密码将被哈希和腌制,并且
  2. 对于做彩虹表的人来说,没有任何长度/其他指导更有趣,但是
  3. 我担心的是暴力字典攻击.

我有没有走上正轨呢?

既然我在问下限问题,我不妨问一下上限?再次,它将被哈希和盐渍,因此数据库大小不是问题.那么在这种情况下我能想到的唯一问题是缓冲区比什么都重要,对吧?

更新对于那些迟到的问题

所以普遍的共识似乎证实了我最初的想法,即蛮力增加的风险.然而,由于他们没有关于尺寸的线索这一事实,RT破解者的工作不会那么困难.实际上它可能更容易,因为无论如何它们都从较低的字符表开始.正确?(更不用说现在出现的非技术性问题,而不是关注某个人的肩膀等等,这对于更长的密码并不是一个大问题.)

所以结论是:即使您对密码进行哈希/加密,短密码仍然存在风险

但是对于长密码,我不确定我有一个确定的答案?我应该担心缓冲区溢出,它毕竟仍然是一个常规输入字段.

php security passwords

3
推荐指数
2
解决办法
391
查看次数

这两行PHP有何不同?

假设我们有一个在数据库中的盐,并且已经像这样生成了

$salt = time();

这两行之间有什么区别.

$pass1 = hash('sha1', $password . $salt);

$pass2 = hash_hmac('sha1', $password, $salt);
Run Code Online (Sandbox Code Playgroud)

它们不会产生相同的输出.第一个,hash函数需要2个参数,而hash_hmac需要3个参数.因此,您可以认为我们可以通过$salt单独使用(以实现第三个参数)来获得第三个额外参数,而不是$password . $salt像我们在第2行中那样将其与密码()连接起来.但它并不那么简单,2个结果是不同.为什么?这到底发生了什么?

php hash hmac

3
推荐指数
1
解决办法
461
查看次数

pdo动态绑定asc/desc顺序

假设我有2个pdo语句,只是顺序不同(asc与desc)

$stmt1 = $po->prepare("SELECT * FROM tabname WHERE categ=:categ ORDER BY field1 DESC");
$stmt2 = $po->prepare("SELECT * FROM tabname WHERE categ=:categ ORDER BY field1 ASC");
Run Code Online (Sandbox Code Playgroud)

有没有办法可以动态绑定ASC/DESC,所以我只能有1个 stmt

$order = "ASC"; //or "DESC"

$stmt = $po->prepare("SELECT * FROM tabname WHERE categ=:categ ORDER BY field1 order=:order");
$stmt->bindParam(':order', $order, PDO::PARAM_STR);
Run Code Online (Sandbox Code Playgroud)

php mysql database pdo

3
推荐指数
1
解决办法
3553
查看次数