2007-02-23から1日間の記事一覧

でもさあ,$name="' or 1=1" だったら結局SQLインジェクションじゃんか

よく見てほしいのは,name='$name' ではなく, name=$name になっている点だ. ここでは,$name は,あらかじめ文字列型(すなわち,「自然言語型」)として宣言されているものとする.すると, $name部分には文字列型が入る=そこは文字列として構文解析さ…

でもクエリは書きたい

それじゃあ,「文字列のふりをしたオブジェクト」というのを導入してみよう. Query q="select * from project where name=$name"; 左辺のqは文字列ではなくて,Query型 (SQLのクエリをあらわすオブジェクト)である 右辺の文字列をQuery型のオブジェクト …

文字列には自然言語しか書いちゃだめだ

よくこんなコードをみかける query="select * from project where name='$name'"; とか request="param=$param&code=$code"; とか file="/tmp/$proc.txt"; とか. SQLインジェクションとか,コードインジェクション,XSSとか,この手の脆弱性の根本は 「本来…