パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

価格.com、サービス再開へ」記事へのコメント

  • by Anonymous Coward
    SQL注入されちゃうのはプログラムの欠陥だろー>asahi.comの記事
    • 本当にクラックの方法が記事どおりだとしてら、

       これまでのサイト攻撃は、OSの不備やホームページをネットに提供するプログラムのミスなどを突くケースが多かった。今回は、プログラムに欠陥がなくても、コンピューターが正規の命令か悪意のある命令かは判断できない点を突き、命令をそのまま実行させて支配下に置いていた。

      • 入力された値のバリデーションを正しく行うことは、Secureプログラミングの基本だと思うのだが、、、

        違いますよ。セキュアプログラミングの本当の基本は、入力の値がどうこうというよりも、出力部分、つまり値を使用する部分(SQLならSQL文を文字列連結して作成する部分)で、メタ文字をエスケープすること(ないし制限チェックをすること(たとえば変数をパス名として使用する部分では、使用するところで所定のディレクトリ内かをチェックする。けっして入力値のチェックではない。))です。

        どういうわけか、入力をサニタイズするという場当た

        • いや、そりゃ単なる言葉尻を捉えた揚げ足取りでは?
          ふつーに考えればエスケープ処理はあんたのおっしゃる「出力」の際にやるわけで、サニタイズったらまずそのことでしょう。そうじゃなきゃその出力を行うコード部分を他に転用したときに危ない。
          従って「入力をサニタイズしなさい」というときに、馬鹿正直に値をGetしたコード部分で「サニタイズ」をやるやつぁいないと思いますよ。
          なにしろご指摘のように、出力がSQLなのかHTMLなの
          • by Anonymous Coward on 2005年05月25日 9時45分 (#740417)
            んにゃ。サニタイジングは普通入出力両方でやるぞ。

            出力って、どの部分をさしていってます?
            もし、画面および帳票をさして行ってるならアウト。
            SQLに変数を与えるところを指してるならok。

            動的SQLのすべてがPrepareで書ければいいが、でない場合文字列に

            ;DELETE TABLE **** ;

            とかやられたばあい。DB、言語によっちゃ全部データが。。
            当然SQL実行時の問題なんで画面出力は関係なし。
            ****部分のテーブルわかってる必要はあるが。
            親コメント

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

処理中...