関数 hash_equals()
定義ファイル :/blog/wp-includes/compat.php
hash_equals() Timing attack safe string comparison
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | if ( ! function_exists( 'hash_equals' ) ) : /** * Compare two strings in constant time. * * This function was added in PHP 5.6. * It can leak the length of a string. * * @since 3.9.2 * * @param string $a Expected string. * @param string $b Actual string. * @return bool Whether strings are equal. */ function hash_equals( $a, $b ) { $a_length = strlen( $a ); if ( $a_length !== strlen( $b ) ) { return false; } $result = 0; // Do not attempt to "optimize" this. for ( $i = 0; $i < $a_length; $i++ ) { $result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] ); } return $result === 0; } endif; |
WordPressは先に標準関数のラッピングをしている(WordPress4.01)
PHP5.6から使えるようになる関数
まだ日本語になってませんでした。
PHPマニュアル
タイミング攻撃 安全に 文字を比較する
WordPressソースコメント
2つの文字列を比較する
文字列の長さを漏らすことができる。
文字列を比較しAscii値レベルで比較をし違っていれば
False
あっていれば
数値の0を返す