タグ

phpとsql-injectionに関するnabinnoのブックマーク (7)

  • PHPでのSQLインジェクション対策 - エスケープ・クォート編 — Let's Postgres

    第四企画 坂井 潔 ここではPHPSQLインジェクション対策としてエスケープ・クォート処理を行うケースを説明します。なおSQLインジェクションの簡単な説明や、プレースホルダを用いてより効果的な対策を行うケースに関してはプレースホルダ編を参照してください。 エスケープとは? それではエスケープ処理とはなんでしょうか? 分かりやすいケースとして、文字列を扱う場合を説明します。 例えば「名前がO'Reillyの行をテーブルusersから取得する」あるいは「テーブルusersに、名前はO'Reilly、メールアドレスはo'reilly@example.comとo'reilly_mobile@example.netの2つを改行で繋げたデータを、行として挿入する」と言ったSQLをつくると、この命令文全体が1つ文字列になります。その命令文としての文字列の中に、値としての文字列を埋め込む場合には、それが

  • PHPでのSQLインジェクション対策 — Let's Postgres

    PHPでのSQLインジェクション対策 - プレースホルダ編 by Kiyoshi Sakai — last modified 2011-05-09 14:44 PHPでのSQLインジェクション対策にプレースホルダを使用したケースについて説明します。 PHPでのSQLインジェクション対策 - エスケープ・クォート編 by Kiyoshi Sakai — last modified 2011-06-08 23:30 PHPでのSQLインジェクション対策としてエスケープ、クォート処理を施すケースについて説明します。

  • PHPでのSQLインジェクション対策 - プレースホルダ編: MDB2 | Let's POSTGRES

    PEAR::MDB2 MDB2はPHPでデータベースを操作するためのPEARのパッケージの1つです。pg_query_params、PDOなどと比較すると動作が低速ではありますが、 文字エンコーディングを意識している integer、float、boolean型などの値を、文字列としてではなく数値・論理値としてやりとり出来る bytea型のカラムを、ラージオブジェクト(blob)型として遜色なく扱える 別のデータベース管理システム(MySQLOracleなど)から、あるいはそちらへの移行がしやすい などの理由で、MDB2を使うことを推奨します。 データベースを扱うPEARパッケージには他にもPEAR::DB、PEAR:MDBがありますが、これらの新規の開発はすでに終了しているようなので、できるだけMDB2を使用してください。なおインストールは、権限のあるユーザーで以下のようにします。 #

  • PHPでのSQLインジェクション対策 - プレースホルダ編 | Let's POSTGRES

    第四企画 坂井 潔 SQLインジェクションの脅威からシステムを守るために、プログラミング言語/スクリプトからSQLを発行するときには、パラメータを適切に処理しなくてはなりません。今回はプレースホルダ編と題し、SQLインジェクション対策として最も簡単で効果的な方法を、PHPで説明します。 SQLインジェクションとは? まず「SQLインジェクション」とは何かおさらいしましょう。SQLインジェクションとは、アプリケーション(この場合はPHPスクリプト)に渡すパラメータの値を操作することで、元々は意図されていない処理をSQLとして実行させてしまうことです。 簡単な例をあげてみます。ユーザーから文字列「山田」が渡されたとき、以下のようなSELECT文を発行することにします。 SELECT * FROM users WHERE username LIKE '%山田太郎%'; ユーザーに入力された文字列

  • PHP- SQLインジェクション - Manual

    Getting Started Introduction A simple tutorial Language Reference Basic syntax Types Variables Constants Expressions Operators Control Structures Functions Classes and Objects Namespaces Enumerations Errors Exceptions Fibers Generators Attributes References Explained Predefined Variables Predefined Exceptions Predefined Interfaces and Classes Predefined Attributes Context options and parameters Su

  • [ThinkIT] 第1回:SQLインジェクションによるデータベース操作 (1/3)

    SQLインジェクションでは、クエリなどの任意データを、データベースが実行するSQL文に挿入します。挿入されたクエリは、意図しないデータを検索したり、データベースの情報を変更したり削除したりするというように、様々な操作をデータベースに行います。問題を実証するために次の例を見てみましょう。 // 問題を実証するための入力 $name = "ilia'; DELETE FROM users;"; mysql_query("SELECT * FROM users WHERE name='{$name}'"); 上記の関数内では、ユーザが指定した名前とnameカラムの値が一致したデータをusersテーブルから取り出すことを想定しています。普通、$nameには、iliaといった文字列のように、アルファベットとスペースからできた文字列が格納されています。 しかしここでは、$nameにまったく新しいクエリ

  • 第5回 まだまだ残っているSQLインジェクション | gihyo.jp

    SQLインジェクションは古くから知られている代表的なWebアプリケーションの脆弱性です。JavaScript関連の脆弱性に比べると対処が非常に簡単であるにも関わらず、まだまだ多くのアプリケーションがSQLインジェクションに脆弱です。SQLインジェクションに脆弱なアプリケーションはPHPアプリケーションに限った問題ではありません。JavaPerlなど、ほかの言語で作成されたWebアプリケーションにもまだまだ多くのSQLインジェクション脆弱性が残っていると考えられます。 重要なのは「正しく行えばSQLインジェクション対策は簡単」であることです。 SQLインジェクションの動作原理 SQLインジェクションの動作原理は単純で、解説するまでもないと思いますが、簡単に説明します。SQLインジェクションは、動的にSQL文を生成する際のパラメータに、プログラマが意図していない文字列を与えることにより、デー

    第5回 まだまだ残っているSQLインジェクション | gihyo.jp
  • 1