SQLインジェクションは、やってしまいがちな問題ではありますが、想像の斜め上なところで問題を起こしていたコードがありました。
function show_unko(){
$dir=$_GET['dir'];
$result=get_unko($dir);
//この後に$resultを使って表示処理
}
function get_unko($dir){
$sql="SELECT id,unko,kuso FROM unko_tbl WHERE (中略) ORDER BY id $dir ";
//この後に$sqlを使ったSQL呼び出し
}
わかんない...変数のスコープは問題なし。""内の変数は展開される。dirはASCかDESC以外はアウトだけど値チェックしなかったら当然インジェクション可。もしかしてdirが空=ソートしない場合を想定してない? もしくは全部関数内で実行してもなにも起こらないのが最大のオチ?
$dirは単純につけなくても動くんじゃね 前の処理で$_GETからとっているのもちょっときになるけど
PHPしらんけどUNIX系のスクリプトなら"$var"で変数展開されるのはお家芸の表記だから、SQLインジェクションが発生するのは普通に想像付く。他のどこらへんが問題なのか分からない・・・誰か教えて。