タグ

postgresqlに関するockeghemのブックマーク (28)

  • PostgreSQLのセキュリティアップデートが緊急リリース

    OSSのRDBMSであるPostgreSQLで、予告されていたセキュリティアップデートがリリースされた。ユーザーは速やかなアップデートを。 2013年4月4日、PostgreSQLで「深刻な脆弱性」に対応するためのマイナーアップデートがリリースされた。 今回発見された脆弱性は、DBの正規アカウントを持たないユーザーがpsqlなどでDB接続しようとするだけでDBを破壊できるというもの。「-」で始まるユーザー名で接続すると、データベースサーバのデータディレクトリ構造などに影響を与える可能性がある。一般ユーザー権限で実行できることから、ユーザーには速やかなアップデートを呼び掛けている。 もし即時のアップデートが困難な場合は、一時的にオープンなネットワークからPostgreSQLへの接続を制限するといった回避策も検討する必要があるだろう。 アップデートの対象は以下のバージョン。7.4系、8.0~3

    PostgreSQLのセキュリティアップデートが緊急リリース
    ockeghem
    ockeghem 2013/04/06
    『「-」で始まるユーザー名で接続すると、データベースサーバのデータディレクトリ構造などに影響を与える可能性がある』
  • PostgreSQL Conference 2012で講演します - ockeghem's blog

    PostgreSQL Conference 2012で講演する機会を頂きましたので報告します。 日時:2012年2月24日(金曜日) 14時30分〜17時20分(徳丸の出番は16:30〜17:00) 場所:AP 品川 (東京都港区) 費用:3,500円(申し込みはこちら) 講演タイトル:安全なSQLの呼び出し方 今回は、IPAの安全なSQLの呼び出し方を題材として、SQLインジェクションの発生原理から、安全なSQLの利用方法を基礎から実際までを説明します。 あまりトリッキーな攻撃の方法はしないつもりで、基礎的な話が中心となります。安全なSQLの呼び出し方の作成経緯については、「今夜こそわかる安全なSQLの呼び出し方 〜 高木浩光氏に聞いてみた」を参照下さい。 さて、「安全なSQLの呼び出し方」は以下の五名による執筆となっています。 執筆者 徳丸 浩   永安 佑希允   相馬 基邦   勝

    PostgreSQL Conference 2012で講演します - ockeghem's blog
    ockeghem
    ockeghem 2012/01/20
    PostgreSQL Conference 2012で「安全なSQLの呼び出し方」について講演します
  • PHPから見たPostgreSQLの数値データ型(数値リテラル) | Let's POSTGRES

    smallintはint2、integerはint4 およびint、bigintはint8と同意です。またsequenceを使うという機能を除けば、serialはintegerと、bigserialはbigintと同様の動きをします。これらは小数点以下のない「整数値」です。 serial、bigserialの値のフォーマット・範囲のチェックなどはinteger、bigintと同じですので、以下はそれぞれに読み替えてください。 64bitシステムでの整数値のチェック smallintとinteger まず、値が負でない(すなわちマイナス記号がつかない)ことを必須にしてしまってよければ、smallintやintegerのチェックは簡単です。 if(!ctype_digit($_REQUEST['num']) || $_REQUEST['num'] > 32767) { // NG処理 } これ

    ockeghem
    ockeghem 2011/12/13
    『数値はシングルクォートで囲んだ文字列としてではなく、数値そのもの…としてSQLに埋め込む方法が主流になりつつあります』<相変わらず素晴らしい内容
  • PostgreSQL 9.0から使える識別子とリテラルのエスケープ

    (Last Updated On: 2018年8月13日)PostgreSQL Advent Calender用のエントリです。 エスケープ処理が必要なのにエスケープ用のAPIが無い状態は良くありません。エスケープしないために動かないのはまだ良い方です。エスケープが必要なのにエ スケープをしなくても動いてしまい、セキュリティ上の問題となる場合もあります。全てのアプリケーション・ライブラリはエスケープが必要なデータに対するAPIを持っておくべき です。今回はPostgreSQL 9.0から追加されたエスケープ関数を紹介します。 PostgreSQL使い始めて最初の頃に気づくのはuserなどの予約語がフィールド名に使えない事かも知れません。例えば、 yohgaki@[local] test=# CREATE TABLE user (name text); ERROR:  syntax erro

    PostgreSQL 9.0から使える識別子とリテラルのエスケープ
    ockeghem
    ockeghem 2011/12/12
    前提条件が書いてないのでわかりにくいけど、userをSQL文のフィールド名に使うためには"user"とダブルクォートで囲めばよい。エスケープ関数が必要なのはSQL文を動的生成する場合
  • PostgreSQLは標準でバックスラッシュをエスケープしない仕様になった

    PostgreSQL9.1の仕様変更にて、デフォルト時の設定として、standard_conforming_stringsがonとみなされるようになりました。この仕様変更により、デフォルト設定でのPostgreSQLは、バックスラッシュをエスケープする必要がなくなり、ISO規格のSQLと同様のエスケープルール(シングルクォートを重ねるのみ)となります。 PostgreSQLの文字列リテラルは、元々MySQL同様に、バックスラッシュをエスケープする仕様でした。その後、リリース8.1にて、設定パラメータ standard_conforming_strings が追加され、この値が on の場合、バックスラッシュをエスケープしない(ISO規格と同様の)仕様となりました。従来のリリースでは、standard_conforming_stringsを指定しない場合offとみなされていました。これは、後

  • PostgreSQL 9.1 の新機能—Let's Postgres

    PostgreSQL 9.1.0 が 2011年9月12日にリリースされました。 最新版のバイナリやソースコードは "ダウンロード用ページ" で配布されています。 9.1 では、9.0 で新規に採用されたレプリケーション機能の使い勝手の強化の他、外部のファイルや DB に直接アクセスできる SQL/MED や、拡張モジュールの管理機能など、さらなる強化が行われています。 互換性に関する注意 最初が注意になってしまいますが、以前のバージョンとの互換性の無い設定がデフォルトに変更されています。比較的多くのアプリケーションで問題になる可能性があるため、あえて強調して注意させてもらいます。 standard_conforming_strings のデフォルトが on に変更 standard_conforming_strings = on がデフォルトになりました。E'...' 形式でない文字列内

    ockeghem
    ockeghem 2011/09/13
    こちらの方が読みやすい。バックスラッシュについての重要な注意。MySQL独自記法からISO標準に合わせたと言うことですね
  • Release 9.1

    E.76.1. Overview This release shows PostgreSQL moving beyond the traditional relational-database feature set with new, ground-breaking functionality that is unique to PostgreSQL. The streaming replication feature introduced in release 9.0 is significantly enhanced by adding a synchronous-replication option, streaming backups, and monitoring improvements. Major enhancements include: Allow synchrono

    Release 9.1
    ockeghem
    ockeghem 2011/09/13
    『By default, backslashes are now ordinary characters in string literals』<デフォルトでバックスラッシュをエスケープしなくなるという重要な変更
  • PostgreSQL の導入 - Linux で自宅サーバ [ Home Server Technical. ]

    PostgreSQL とは、格的な RDBMS (つまりはデータベース)の事です。オープンソースで無償で利用する事が可能です。 私の所感としましては、「初心者でも扱いやすい」という印象を受けました。 ちなみに、「 PostgreSQL 」は、「ポストグレス」「ポストグレエスキューエル」「ポストグレスキューエル」などと発音する(呼ばれている)らしいです。 私は「ポストグレスキューエル」がお気に入りです。 Vine Linux には元々 PostgreSQL がインストールされています。 私は、触っている内に何がなんだかワケ分からなくなり、元々の PostgreSQL を削除しました。 ですので、新規でインストールする事になりました。 「特に PostgreSQL について触ってないよ」と言う方は、事項の PHP に関する記述からお読み下さい。 この PostgreSQL の導入に関しては、

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • PostgreSQL 使用時の文字列のエスケープ回避問題 - t_komuraの日記

    2006.03.06 追記 この問題については、iakio日誌(2006-02-15)において、PHP スクリプトで回避する方法の例と、PostgreSQL に Patch を当てて回避する方法を示しておられます。問題の影響を受ける場合は参考にすると良いと思います。 1月22日に書いた、addslashes() による SQL 文字列のエスケープ回避問題の続きです。PostgreSQL でさらに検証してみました。 結論としては、前回と同様ですが、PostgreSQL に関しては、SJIS は使用しない方が安全という事になります。 クライアントの文字コードとして、SJIS を使用している場合、addslashes() によるエスケープは既に指摘されている通りですが、PostgreSQL 用の文字列エスケープ関数である、pg_escape_string() を使用している場合でも問題があります

    PostgreSQL 使用時の文字列のエスケープ回避問題 - t_komuraの日記
  • pg_sleepを使った検査 - teracc’s blog

    徳丸さんの日記(pg_sleepをSQLインジェクション検査に応用する - ockeghem's blog)を読みました。 こういう検査のマニアックな話は大好きです。 このあたりのシグネチャは、私も自作ツール(参考)の検討をしていた際に相当いろいろ悩んで調べましたので、今回はUPDATE文のSET句などにも適用できるような改善の提案をしたいと思います(おろらく既に徳丸さんの頭にあるものだとは思いますが)。 徳丸さんの日記の検査パターンは、以下の値を挿入するものでした。 ' and cast( (select pg_sleep(3)) as varchar) = 'これを少し変えて、以下のようにします。 <文字列型> 【元の値】'||(select pg_sleep(3))||'数値型であれば、以下のようにします。 <数値型> 【元の値】-cast(chr(48)||(select pg_s

    pg_sleepを使った検査 - teracc’s blog
    ockeghem
    ockeghem 2009/11/05
    言及ありがとうございます。select pg_sleep(3)は比較だとキャストが必要なのに、文字列連結だとキャストが要らないのですね。
  • pg_sleepをSQLインジェクション検査に応用する - ockeghem's blog

    SQLインジェクションの進化形として、ブラインドSQLインジェクションという手法があります。通常のSQLインジェクションは、検索結果表示やエラー表示のところに、アプリケーションの想定とは別のテーブル・列の値を表示するものですが、ブラインドSQLインジェクションは、SQLの結果がエラーになる・ならないを1ビットの情報として悪用し、これを積み重ねることで、データベース内の任意情報を得ることができるというものです。 1ビットの情報が得る手段としては、SQLのエラー表示に限らないわけで、現実問題として、SQLのエラーが外部からは判別しにくい場合もあります。そのような場合の究極形として、時間差を利用するという手法があります。 MS SQL Serverには、waitfor delayという命令があって、時・分・秒指定でスリープさせることができます。金床には、MySQLやPostgreSQLの場合の

    pg_sleepをSQLインジェクション検査に応用する - ockeghem's blog
  • 第11回 データベースへのアクセス [PDO編] | gihyo.jp

    PHPでデータベースにアクセスする方法のうち、今回はPDO(PHP Data Objects)によって行う方法を紹介します。PDOをサポートしているデータベース(DB)を用いると、接続の時にその種類を指定する以外は、PDOによって統一化された方法でアクセスすることができます。関数の場合は接続するデータベースの種類ごとに関数名が変わりますが、PDOでは多くの機能がPDOクラスに集約され、各DBごとに特化したメソッドや定数についてのみ、DBの種類に応じた名称がつけられています。 PDOを利用するための設定 PDOを利用できるようにするには、事前に確認しておかなくてはならないことがあります。 接続するDBに対応したPDO用のドライバが用意されているか ドライバとは、PDOによる接続を行うモジュールで、それぞれのDBMSごとに必要です。Oracle, PostgreSQLなど主なDBでは、あらかじ

    第11回 データベースへのアクセス [PDO編] | gihyo.jp
  • PostgreSQL 9.0.1文書

    製作著作 © 1996–2023 The PostgreSQL Global Development Group, (翻訳)日PostgreSQLユーザ会

  • DBD::Pg - A Postgres database driver for the Perl DBI

    DBD::Pg is a Perl DBI driver for the PostgreSQL database. While both Perl and Postgres are excellent products, getting them to work together is somewhat challenging, since the driver needs to be linked with the Postgres libraries (which are not always going to be installed on the machine you're trying to access the database from). This is further compounded by the fact that the Win32 distribution

  • http://www.mono-space.net/doc/jdbc/

  • [PostgreSQLウォッチ]第16回 PostgreSQLのバッファ・マネージャの改良

    データベース・システムにとって,バッファの管理を一手に引き受けるバッファ・マネージャは,ディスクI/O効率,ひいてはデータベース・システムのパフォーマンスを左右する重要な構成要素だ。PostgreSQL 8.0のバッファ・マネージャは,ARC(Adaptive Replacement Cache)というアルゴリズムを採用し,以前のバージョンに比べるとパフォーマンスが向上している。 しかし,ARCは米IBMが特許を出願中であるため,特許が成立するとARCを使えなくなってしまう可能性がある。もちろん特許が成立するまではARCを使うことに何ら問題はないが,それでも早いうちに手を打つに越したことはない,ということでPostgeSQLの開発者はARCに代るアルゴリズムを採用すべく開発中である。新しいアルゴリズムは,まもなくリリースされると思われるPostgreSQL 8.0.2に搭載される予定だ。

    [PostgreSQLウォッチ]第16回 PostgreSQLのバッファ・マネージャの改良
  • [PostgreSQLウォッチ]第39回 PostgreSQL 8.4の新機能「再帰SQL」と最新情報

    来年はじめのリリースを目指して開発中のPostgreSQL 8.4の姿が見え始めてきた。今回は8.4の新機能の目玉の一つである「再帰SQLのサポート」を中心にお話しする。 開発にあたっては,PostgreSQLの大規模利用ユーザーである住友電工情報株式会社がリソースを提供し,筆者の勤務するSRA OSS日支社がPostgreSQLコミュニティとの調整および実装を担当した。最終的にはPostgreSQLコアメンバらの協力で実装がブラッシュアップされ,8.4への取り込みが確定した。 プログラミング言語における再帰処理 再帰処理はCやJavaなどの通常のプログラミングでは普通にサポートされており,うまく使うと効率のよいプログラムをきれいに書くことができる。再帰処理は再帰的な構造を持つデータ,例えば木構造やリスト構造を処理する際に良く使われる。 データベースにおける再帰処理 再帰SQLとは,文字

    [PostgreSQLウォッチ]第39回 PostgreSQL 8.4の新機能「再帰SQL」と最新情報
  • 日本PHPユーザ会 掲示板: PHP 5 » php5.2.6インストーラ版、zip版(win)について

    こんにちわ。はじめまして。 どこに書き込めばよいのか分からなかったので、とりあえずこちらに。 先日リリースされたphp5.2.6について、システムアップデートをテストするため windowsバイナリ版でインストール(アップデート)したところ、内部サーバーエラー500 が発生しました。 いろいろ調べてみますと、postgreSQLとの連動が取れていないことに起因しているようで、 pg_sql.dllが適切な場所にインストールされているにも関わらず、pg_sql.dllが存在していない ような振る舞いをしているために、エラーとなっているようでした。 何度かアプリケーションの削除→再インストールを繰り返したのですが動作しなかったので、 pg_sql.dllのみをphp5.2.5版に含まれていたものへ差し替えると正常動作しました。 (ちなみに、php5.2.6zip版に含まれているpg_sql.d

    ockeghem
    ockeghem 2008/10/23
    僕もはまった。5.2.6は現時点で安定版の最新じゃないか。早く修正してくれよ~/とりあえずは5.2.5からphp_pgsql.dllを取り出してコピーしたら直った
  • 自動化されたSQL Injectionの攻撃対象 - teracc’s blog

    WASCのWeb Security MLの少し前の投稿より。 Tactical Web Application Security: Mass SQL Injection Attacks Now Targeting PHP Sites 自動化されたSQL Injection攻撃が、現在はPHPサイトをターゲットにしているとの内容の記事です。 確かに、SQL Injectionによって埋め込まれるJSファイルのURLをキーワードにしてGoogle検索すると、拡張子がphpのページもヒットします。 "1000mg.cn/csrss/w.js" - Google Search 個人的に一番気がかりなのは、これまで狙われていたSQL Server以外のデータベースが新たに攻撃対象になっているのか(あるいはそうではないのか)ということです。 そこにも関わりそうな話なので、可能な範囲で調べてみました。

    自動化されたSQL Injectionの攻撃対象 - teracc’s blog
    ockeghem
    ockeghem 2008/09/15
    改ざんの手法としてはアプリのSQLインジェクション以外にphpBBのぜい弱性を利用したものも多いようです。また、拡張子cfmはColdFusionですが、ずいぶん多いのが気になります。