アカウント名:
パスワード:
プログラム内部で”変数”と”命令”を明確に意識していない
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
SQLは人が手で入力して使うツール (スコア:1)
コードにSQLの断片を埋め込んで、パラメータを文字列連結して、ランタイムでコードがSQLを生成するのは、全面的にやめるべきだと思います。
メンテナンス性の為や手抜きのために複雑な構文解析機を通して検索ロジックを実行時に機械語へビルドしている事になるわけですが、安全なサービスの構築のためにはロジックは静的に用意されているべきだと思います。
上に ORM をのっけて蓋をするのでもいいんですが、SQLという文字列でロジックをDBSに渡すというのは、無駄が多すぎる気がしてなりません。
良い解決策をもっているわけではないのですが…
Re: (スコア:1, 興味深い)
プログラム内部で”変数”と”命令”を明確に意識していない
人が多すぎます。
SQLしかり、コマンドインジェクションしかり。
ORACLEのようにprepare効果でないmysqlとかでも
キチンとバインド変数つかって、SQL文と、それに与える値を
意識してわけて使用し、利用していればDBへの橋渡しをする
部分で吸収してくれることがおおいのに。
(もちろんそれで完全にふせげるなんておもってないけど
あんまり知識ない人でもそれだけで防げること多いと思います)
perlでコマンド実行でも\Q\Eでくくって記号を\して、
命令と”引数”を明確にわけるだけでも危険をへらせるのに、
どうにもかんにも。
すこし変えればすむことなんですけど、そういうコードを
かくひとにかぎって、何の根拠にもなっていない言い分で
ぜんぜんなおそうとしてくれないのでツライですねぇ・・・
Re:SQLは人が手で入力して使うツール (スコア:0)
Re: (スコア:0)
ほら、みんな静的バインディングをつかわないから…
# って、いかに本質を見誤ってるかがわかっちゃいました。