PHP的strcmp函式引發的安全問題

2021-07-25 13:20:43 字數 1004 閱讀 7797

在官方的文件有這麼一端說明:

note

a difference between

5.2and

5.3versions

echo

(int

)strcmp

('pending'

,array

());

will output -1

inphp

5.2.16(

probably

inall versions prior

5.3)

but will output 0in

php

5.3.3of

course

,you never need to

usearray

asa parameter

instring

comparisions

.

大概意思就是5.3的之前和之後版本在使用strcmp比較陣列和字串時候的差異。

在5.3的版本之後使用這個函式比較會返回0,太令人迷戀了。。。

php#$a='hello world!';

$password

=$_get

['password'

];#$a=true;

#echo gettype($a);if(

strcmp

('firebroo'

,$password

))else

#echo ord('a');

?>

這樣一段**,原本的意圖是輸入firebroo才能獲得許可權,但是在5.3版本之後捏,you just need input an array ,like this(?password=1)

看圖

跳過了驗證,少年,上吧。。

strcmp函式的實現

6 實現strcmp函式的功能,要求按照先比字元後比長度的方式。include int stringlength char array return arraylength int stringcmp char array1,char array2 else if array1 i if i str...

strcmp函式的使用

strcmp是比較兩個字串的大小,兩個字串相同時返回0,第乙個字串大於第二個字串時返回乙個正值,否則返回負值.比較兩個字串的演算法是 逐個比較兩個串中對應的字元,字元大小按照ascii碼值確定,從左向右比較,如果遇到不同字元,所遇第一對不同字元的大小關係就確定了兩個字串的大小關係,如果未遇到不同字元...

strcmp函式的使用

strcmp是比較兩個字串的大小,兩個字串相同時返回0,第乙個字串大於第二個字串時返回乙個正值,否則返回負值.比較兩個字串的演算法是 逐個比較兩個串中對應的字元,字元大小按照ascii碼值確定,從左向右比較,如果遇到不同字元,所遇第一對不同字元的大小關係就確定了兩個字串的大小關係,如果未遇到不同字元...