当前位置:  开发笔记 > 编程语言 > 正文

这个PHP nonce库如何工作?

如何解决《这个PHPnonce库如何工作?》经验,为你挑选了1个好方法。

从http://fullthrottledevelopment.com/php-nonce-library#download,有一个PHP nonce库,但有一些我不明白的东西.第一个是它提醒我们为它设置一个值,FT_NONCE_UNIQUE_KEY但它从不在它的任何函数中使用它.

第二件事是,当我调用该ft_nonce_create_query_string函数时,等待几秒钟,然后使用相同的参数再次调用它,两个调用都返回相同的值.这很奇怪,我真的不明白如何确保它生成的每个nonce,nonce将在指定的持续时间内有效FT_NONCE_DURATION.

但如果我在第二次通话之前等待更长时间,他们将返回不同的价值.我在这里粘贴了代码,以便您可以尝试直接运行它.

为什么会这样?它应该如何工作?

.
*/

define( 'FT_NONCE_UNIQUE_KEY' , '' );
define( 'FT_NONCE_DURATION' , 300 ); // 300 makes link or form good for 5 minutes from time of generation
define( 'FT_NONCE_KEY' , '_nonce' );

// This method creates a key / value pair for a url string
function ft_nonce_create_query_string( $action = '' , $user = '' ){
 return FT_NONCE_KEY."=".ft_nonce_create( $action , $user );
}

// This method creates an nonce for a form field
function ft_nonce_create_form_input( $action = '' , $user='' ){
 echo "";
}

// This method creates an nonce. It should be called by one of the previous two functions.
function ft_nonce_create( $action = '' , $user='' ){
 return substr( ft_nonce_generate_hash( $action . $user ), -12, 10);
}

// This method validates an nonce
function ft_nonce_is_valid( $nonce , $action = '' , $user='' ){
 // Nonce generated 0-12 hours ago
 if ( substr(ft_nonce_generate_hash( $action . $user ), -12, 10) == $nonce ){
  return true;
 }
 return false;
}

// This method generates the nonce timestamp
function ft_nonce_generate_hash( $action='' , $user='' ){
 $i = ceil( time() / ( FT_NONCE_DURATION / 2 ) );
 return md5( $i . $action . $user . $action );
}

if ( FT_NONCE_UNIQUE_KEY == '' ){ die( 'You must enter a unique key on line 2 of ft_nonce_lib.php to use this library.'); }
?>

rook.. 17

哇,不要使用这个图书馆.我将在此帖后立即将此报告为漏洞.Nonce是一个只使用一次的值,这个库确实提供了这个值.但是,作者试图阻止跨站请求伪造(XSRF).为了防止攻击者伪造消息,需要有一个攻击者无法预测的秘密值.为此,您需要一个密码安全的随机数生成器或CSRPING.这个库构建的Nonce是非常可预测的,并且可以使用简单的javascript轻松强制执行.



1> rook..:

哇,不要使用这个图书馆.我将在此帖后立即将此报告为漏洞.Nonce是一个只使用一次的值,这个库确实提供了这个值.但是,作者试图阻止跨站请求伪造(XSRF).为了防止攻击者伪造消息,需要有一个攻击者无法预测的秘密值.为此,您需要一个密码安全的随机数生成器或CSRPING.这个库构建的Nonce是非常可预测的,并且可以使用简单的javascript轻松强制执行.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有