タグ

sqlに関するtaorunのブックマーク (3)

  • 自己流のSQLインジェクション対策は危険

    HTMLエスケープの対象となる < > & " の4文字は、文字実体参照に変換された後、preg_replace関数でセミコロンを削除してしまうので、中途半端な妙な文字化けになりそうです。 一般的な原則としては、データベースにはHTMLの形ではなくプレーンテキストの形で保存しておき、HTMLとして表示する直前にHTMLエスケープする方法で統一することで、上記のような文字化けやエスケープ漏れをなくすことがよいでしょう。 脆弱性はないのか このsanitize関数に脆弱性はないでしょうか。上表のように、バックスラッシュ(円記号)を素通ししているので、MySQLや、設定によってはPostgreSQLの場合に、問題が生じそうです。以下、それを説明します。以下の説明では、MySQLを使う想定とします。 以下のように、ログイン処理を想定したSQL文組立があったとします。 $sql = sprintf(

  • MySQL で外部ファイルから SQL を実行する方法 | 僕と僕のサル以外、みんな何かを隠してる

    MySQL のプロンプトから、外部ファイルに記述した SQL 文を実行するためには、source コマンドを利用する。mysql > source (text_file_name) また、Windows のバッチファイルを利用して外部ファイルの SQL 文を実行する場合は、リダイレクトを利用すればよい。 C:\> mysql -u username -ppassword < sql.txtユーザ名が "username"、パスワードが "password" である場合、sql.txt に記述した SQL 文は、上記のように実行することができる。 この場合、-p と password の間に空白は不要である。

    MySQL で外部ファイルから SQL を実行する方法 | 僕と僕のサル以外、みんな何かを隠してる
    taorun
    taorun 2012/07/29
    ワンライナーでsql叩けるかも?
  • insertの中のselect文

    valuesを使った行の挿入は、全く新しいテーブルをつくる時には必要だが、もしも、 既にあるテーブルを加工して新しいテーブルをつくる場合には、selectを使った挿入が 便利である。次の例は、元からあるテーブル「利用者台帳」利用して、新しいテーブル 「利用者台帳稚内編」をつくる例である。 例 72: 古いテーブルを利用して新しいテーブルをつくる insert into 利用者台帳稚内編 select * from 利用者台帳 where 住所 like '%稚内%' valuesを使った挿入では、一つのinsert文で一行の挿入しか出来なかったが、selectを 使ったこの形式では、selectが返す複数の行が、ただちに新しいテーブルに取り込まれ ることになる。 この例では、二つのテーブルは、順序を含めて対応する項目のデータのタイプが同じで なければならない。もしも、項目の数や順序が一致し

    taorun
    taorun 2012/07/01
    selectで作った複数行データをinsert
  • 1