アカウント名:
パスワード:
これまでのサイト攻撃は、OSの不備やホームページをネットに提供するプログラムのミスなどを突くケースが多かった。今回は、プログラムに欠陥がなくても、コンピューターが正規の命令か悪意のある命令かは判断できない点を突き、命令をそのまま実行させて支配下に置いていた。
入力された値のバリデーションを正しく行うことは、Secureプログラミングの基本だと思うのだが、、、
違いますよ。セキュアプログラミングの本当の基本は、入力の値がどうこうというよりも、出力部分、つまり値を使用する部分(SQLならSQL文を文字列連結して作成する部分)で、メタ文字をエスケープすること(ないし制限チェックをすること(たとえば変数をパス名として使用する部分では、使用するところで所定のディレクトリ内かをチェックする。けっして入力値のチェックではない。))です。
どういうわけか、入力をサニタイズするという場当た
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson
プログラムに欠陥がなくても? (スコア:2, すばらしい洞察)
Re:プログラムに欠陥がなくても? (スコア:2, 興味深い)
サニタイズ?何それ (スコア:1)
違いますよ。セキュアプログラミングの本当の基本は、入力の値がどうこうというよりも、出力部分、つまり値を使用する部分(SQLならSQL文を文字列連結して作成する部分)で、メタ文字をエスケープすること(ないし制限チェックをすること(たとえば変数をパス名として使用する部分では、使用するところで所定のディレクトリ内かをチェックする。けっして入力値のチェックではない。))です。
どういうわけか、入力をサニタイズするという場当た
Re:サニタイズ?何それ (スコア:0)
ふつーに考えればエスケープ処理はあんたのおっしゃる「出力」の際にやるわけで、サニタイズったらまずそのことでしょう。そうじゃなきゃその出力を行うコード部分を他に転用したときに危ない。
従って「入力をサニタイズしなさい」というときに、馬鹿正直に値をGetしたコード部分で「サニタイズ」をやるやつぁいないと思いますよ。
なにしろご指摘のように、出力がSQLなのかHTMLなの
Re:サニタイズ?何それ (スコア:0)
出力って、どの部分をさしていってます?
もし、画面および帳票をさして行ってるならアウト。
SQLに変数を与えるところを指してるならok。
動的SQLのすべてがPrepareで書ければいいが、でない場合文字列に
;DELETE TABLE **** ;
とかやられたばあい。DB、言語によっちゃ全部データが。。
当然SQL実行時の問題なんで画面出力は関係なし。
****部分のテーブルわかってる必要はあるが。
Re:サニタイズ?何それ (スコア:0)