@@ -30,14 +30,14 @@ function aikotoba(): void {
3030 check_same_origin ();
3131
3232 session_sta ();
33- if (!$ aikotoba || $ aikotoba!== (string )filter_input_data ('POST ' ,'aikotoba ' )){
33+ if (!$ aikotoba || ! hash_equals ( $ aikotoba, (string )filter_input_data ('POST ' ,'aikotoba ' ) )){
3434 if (isset ($ _SESSION ['aikotoba ' ])){
3535 unset($ _SESSION ['aikotoba ' ]);
3636 }
3737 if ((string )filter_input_data ('COOKIE ' ,'aikotoba ' )){
3838 setcookie ('aikotoba ' , '' , time () - 3600 );//クッキーを削除
3939 }
40- error ($ en ?'The secret word is wrong ' :'合言葉が違います。 ' );
40+ error ($ en ?'The secret word is wrong. ' :'合言葉が違います。 ' );
4141 }
4242 if ($ keep_aikotoba_login_status ){
4343 setcookie ("aikotoba " ,$ aikotoba , time ()+(86400 *30 ),"" ,"" ,false ,true );//1ヶ月
@@ -253,15 +253,15 @@ function admindel_valid(): bool {
253253}
254254function userdel_valid (): bool {
255255 session_sta ();
256- return isset ($ _SESSION ['userdel ' ])&&($ _SESSION ['userdel ' ]=== 'userdel_mode ' );
256+ return isset ($ _SESSION ['userdel ' ])&& hash_equals ($ _SESSION ['userdel ' ], 'userdel_mode ' );
257257}
258258//合言葉の確認
259259function aikotoba_valid (): bool {
260260 global $ keep_aikotoba_login_status ,$ aikotoba ;
261261 session_sta ();
262- $ keep =$ keep_aikotoba_login_status ? ($ aikotoba && ($ aikotoba=== (string )filter_input_data ('COOKIE ' ,'aikotoba ' ))
262+ $ keep =$ keep_aikotoba_login_status ? ($ aikotoba && hash_equals ($ aikotoba, (string )filter_input_data ('COOKIE ' ,'aikotoba ' ))
263263 ) : false ;
264- return ($ keep ||isset ($ _SESSION ['aikotoba ' ])&&($ _SESSION ['aikotoba ' ]=== 'aikotoba ' ));
264+ return ($ keep ||isset ($ _SESSION ['aikotoba ' ])&& hash_equals ($ _SESSION ['aikotoba ' ], 'aikotoba ' ));
265265}
266266
267267//センシティブコンテンツ
@@ -970,6 +970,11 @@ function check_same_origin(): void {
970970function check_badhost (): void {
971971 global $ en ;
972972 if (is_badhost ()){
973+ //禁止ホストの管理者ログインを解除
974+ unset($ _SESSION ['adminpost ' ]);
975+ unset($ _SESSION ['admindel ' ]);
976+ //編集・削除モードを解除
977+ unset($ _SESSION ['userdel ' ]);
973978 error ($ en ? 'Rejected. ' : '拒絶されました。 ' );
974979 }
975980}
@@ -1183,6 +1188,7 @@ function is_badhost(): bool {
11831188 $ use_badhost_session_cache = $ use_badhost_session_cache ?? false ;
11841189
11851190 session_sta ();
1191+
11861192 $ session_is_badhost = $ _SESSION ['is_badhost ' ] ?? false ; //SESSIONに保存された値を取得
11871193 if ($ use_badhost_session_cache && $ session_is_badhost ){//禁止ホストフラグがSESSIONに保存されていたら拒絶
11881194 return true ;
@@ -1193,7 +1199,7 @@ function is_badhost(): bool {
11931199
11941200 if ($ host === $ userip ){//ホスト名がipアドレスになる場合は
11951201 if ($ reject_if_no_reverse_dns ){
1196- if (filter_var ($ userip , FILTER_VALIDATE_IP ,FILTER_FLAG_IPV4 )){//IPv4アドレスなら
1202+ if (! $ host || filter_var ($ userip , FILTER_VALIDATE_IP ,FILTER_FLAG_IPV4 )){//IPv4アドレスなら
11971203 $ _SESSION ['is_badhost ' ] = true ;
11981204 return true ; //リバースDNSがない場合は拒絶
11991205 }
0 commit comments