運用中コードを覗いて見つけて大爆笑してました。
JavaScriptからPHPを呼び出しているようです(項目名はぼかしています) これdrop tableとか渡したら。。。怖くて試していません。
// JavaScript var ins = "insert into xxx(v1, v2, v3) values('"+v1+"','"+v2+"',null)"; var someArr = ["a","b","c"]; $.ajax({ type: "POST", url: "update.php", data: { p1: ins, p2: someArr } }); //---------------------- // update.php <?php require("common.php.inc"); $db = new PDO("DBへのパス"); try { $sql = $_REQUEST['p1']; $db->exec("begin tran"); $db->exec($sql); for ($i=0; $i<count($_REQUEST['p2']); $i++) { ...何かの処理に失敗したら$errflgを1にする } if ($errflg != 1) { $db->exec("commit"); } else { $db->exec("rollback"); } } catch (Exception $e) { $db->exec("rollback"); exit(1); } ?>
使い方ヒント: 「これは臭う」という行を見付けたら、各行のをクリックしてマーキングしておきましょう(要Twitter OAuth認証)
きっとあれだ、insertしかできないような権限しかないはずだきっと。きっと・・・
insertだけならセキュリティリスクがない、とでも?
include, require, use等の命令で取り込むためのインクルードファイル名に「.inc」「.pm」等、標準ではWebサーバ(ソフトウェア)やWebアプリケーションサーバがスクリプトとして認識しない拡張子をもたせている。これらのインクルードファイルはURLさえ見当がつけばインターネットから閲覧できるおそれがある http://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/401.html
コメント投稿には、twitter認証が必要です。
Twitter認証
脆弱性しかなかった