運用中コードを覗いて見つけて大爆笑してました。
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認証
脆弱性しかなかった