extract()の使用を全廃
poti-boardというPHPスクリプトをサイトに設置したいのですが、設置手順通... - Yahoo!知恵袋extract($_POST); extract($_GET); extract($_COOKIE);による変数の取得をやめて、個別に変数を取得するようにしました。
このスクリプトはPHP5であるにも関わらず extract($_POST); extract($_GET); extract($_COOKIE); と、register_globals同等のことを自らやっているので、相変わらず脆弱性はあります。
POTI-board改 v1.50.0で対応ずみです。
残るはextract($_SERVER);でしたが…。
var_dump(count($_SERVER));で確認すると存在している配列の数47…。
変数として使っていれば配列のキーが変数名になっているはずなので1個ずつgrepで確認。
extract()を使っているのに、POSTかどうか調べているだけでした。
$REQUEST_METHOD = ( isset($_SERVER["REQUEST_METHOD"]) === true ) ? ($_SERVER["REQUEST_METHOD"]): "";に書き直しました。
外部から取得する変数の取得方法を三項演算子に統一。
変数が未定義なら空文字列になるようになりました。
POTI-boardのエラーを減らすために $mode編: STP^3と書けば未定義エラーはでなくなると書きましたが…。
//未定義エラー対策
if (isset($mode)){
switch($mode){
$modeが未定義にならなくなったので、isset()で確認する必要がなくなりました。
かなりの数のisset()を削減する事ができました。
この変更はPOTI-board改 v1.51.0に反映されました。
お絵かき掲示板はこちら。
posted by さとぴあ at 2019/01/23 21:36
| お絵かき掲示板の改造