extract()の使用を全廃

poti-boardというPHPスクリプトをサイトに設置したいのですが、設置手順通... - Yahoo!知恵袋

このスクリプトはPHP5であるにも関わらず extract($_POST); extract($_GET); extract($_COOKIE); と、register_globals同等のことを自らやっているので、相変わらず脆弱性はあります。
extract($_POST); extract($_GET); extract($_COOKIE);による変数の取得をやめて、個別に変数を取得するようにしました。
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に反映されました。

お絵かき掲示板はこちら。

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。