タグ

sqlとSQLに関するMukeのブックマーク (34)

  • Time-based SQL Injectionは意外に実用的だった

    このエントリでは、Time-based SQLインジェクション、すなわち時間差を利用したSQLインジェクションが意外に実用的だったという報告をします。デモ映像ありです。 はじめに Time-based SQL Injectionという攻撃があります。これはブラインドSQLインジェクションの一種で、ある条件の場合に一定時間(例えば5秒)スリープし、そうでない時との応答時間の差で情報を盗もうというものです。1回のHTTPリクエストで1ビットの情報が得られるので、それを積み重ねることによって、いくらでも情報を盗めるはずです…理論的には。 しかし、「理屈はそうでも、時間が掛かりすぎるよね」ということで、深くは追っかけていませんでした。SQLインジェクションの検査には有効でも、悪用としての実用性はあまりないと考えていたのです。 きっかけ きっかけは、以下のYahoo!知恵袋に以下の質問です。 SQL

    Time-based SQL Injectionは意外に実用的だった
  • 書籍出版のお知らせ:理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL

    来る2月27日、データベースの新書籍を発売させて頂くことになった。タイトルは「理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL」となっている。単に「データベース」と書いてあるが、RDBがメインのテーマの書籍である。 多くの人が未だにRDBを使いこなせていないのではないか。RDBの使い方をマスターするには何が必要なのか。それがここ数年私が追ってきたテーマであり、この書籍を出すことになった動機である。 あまりにも酷いDB設計、あまりにもスパゲティなクエリ、あまりにも希薄なデータモデルへの理解。そういった問題はどこから生み出されるのか。そのひとつの結論としてたどり着いたのが、「そもそもRDBの使い方があまり理解されていないのではないか」ということだった。名著、SQLアンチパターンでは「やってはいけないケース」について学ぶことができるが、その反対のテーマ、つまり来どの

    書籍出版のお知らせ:理論から学ぶデータベース実践入門 ~リレーショナルモデルによる効率的なSQL
  • 開発者のためのSQLパフォーマンスの全て

    前書き - インデックスの作成はなぜ開発者のタスクなのか インデックスの 内部構造 - インデックスは何に似ているか インデックス リーフノード - 二重連結リスト 検索 ツリー(Bツリー) - バランス木 遅いインデックス パートI - インデックスを遅くする2つの原因 where 句 - 検索のパフォーマンスを改善するためにインデックスを作成 等価 演算子 - 一致するキーの検索 プライマリキー - インデックスの使い方を確認 複合インデックス - 複数列に対するインデックス 遅いインデックス パートII - 前の問題点が再び 関数 - where句の 中での関数 大文字・小文字を区別する 検索 - UPPERと LOWER ユーザ定義 関数 - 関数インデックスの制限 インデックスの作り過ぎ - 冗長性の排除法 パラメータ化 クエリ - セキュリティとパフォーマンスのために 範囲 検

    開発者のためのSQLパフォーマンスの全て
  • 【PC遠隔操作事件】C#でのプログラム作成能力を巡って(第6回公判メモ)(江川紹子) - エキスパート - Yahoo!ニュース

    4月15日に行われた第6回公判では、右陪席裁判官が戸苅左近裁判官に代わったため、更新手続きが行われ、主任弁護人の佐藤博史弁護士が意見を述べた。続いて検察側の証拠の要旨告知の続きを行い、犯人からのメールやメッセージを全文読み上げた。午後からは、派遣先で2ヵ月間ほど同じチームにいた元同僚の証言が行われた。 更新弁論で佐藤弁護士は「片山さんが犯人であれば、存在するはずの証拠が決定的に欠けている」と強調。また、検察側が公判が始まってから「ファイルスラック領域にiesys開発の痕跡が残っていた」という点を犯人性の最大の根拠にし始めたと指摘し、「公判前整理手続きでは全く主張していなかった。こういうやり方は、争点を明確にする公判前整理手続を反故にするもの」と批判した。にもかかわらず、裁判所は検察に理解を示しているとして、「なぜ裁判所は検察に肩入れするのか」と声を荒げた。 元同僚が「被告人からC#のプログ

    【PC遠隔操作事件】C#でのプログラム作成能力を巡って(第6回公判メモ)(江川紹子) - エキスパート - Yahoo!ニュース
    Muke
    Muke 2014/04/16
    簡単なタイマーが作れるなら高機能な電卓作れるよね的な言い方に聞こえて色々つらい
  • Web SQL Databaseと一緒に使いたいライブラリ·WebSQL.js MOONGIFT

    WebSQL.jsはWeb SQL Databaseを使いやすくするJavaScriptライブラリです。 惜しくもHTML5の仕様からはもれていますが、新しいWebブラウザの機能にWeb SQL Databaseがあります。そんなWeb SQL Databaseをより使いやすくしてくれるライブラリがWebSQL.jsです。 デモです。データを追加したり、削除したりできます。 さらに追加しました。再読み込みしても再現します。 WebSQL.jsはデータベースの作成、テーブルの作成、データのCRUD操作、テーブルの削除が行えます。さらにトランザクションやSQLの実行も可能です。各メソッドはチェーンでつないで実行させることも可能になっています。 WebSQL.jsはJavaScript製、MIT Licenseのオープンソース・ソフトウェアです。 MOONGIFTはこう見る Web SQL Da

    Web SQL Databaseと一緒に使いたいライブラリ·WebSQL.js MOONGIFT
  • YappoLogs: サービスをつぶさない為に Web アプリを書く時にやっとくと良い事2選

    サービスをつぶさない為に Web アプリを書く時にやっとくと良い事2選 テンプレートのエラーが出た時にアプリケーションのログだけに書くのでは無く、誰にでも「ここがえらってるよ!」って見えるようにしとくと間違いが少なくなる傾向があるのでテンプレートエンジンでフック出来るようになっておいてたら、それをうまく使うと良い。 また、テンプレートエンジンがレンダリングしてるフェーズで DB にクエリが飛ぶような構造で書いてあると、非エンジニアのカジュアルにテンプレートいじる人が甚大なクエリを実装してしまう可能性があるので、これも早期に発見しないとサービスが止まってしまい会社の売り上げが下がってしまい社員が路頭に迷うケースが発生してしまうので、これらも未然に防がなければならない。 Text::Xslate + Amon2 ならこうかける。 package MyProje::Web; ...; { my

  • 「クロスサイトスクリプティング対策」でGoogle検索して上位15記事を検証した

    昨年の11月にブログエントリ『「SQLインジェクション対策」でGoogle検索して上位15記事を検証した』という記事を書いたところ、非常に好評で、「次はXSSについて書いてください」という要望をいただいておりました。中々XSSについては手がついておりませんでしたが、ようやく書いてみました。以下のURLで検索した結果の上位15位の記事を検証しました。 http://www.google.co.jp/search?q=クロスサイトスクリプティング対策&pws=0 検索結果は変動するため、私が検索した際の結果をEvernoteの公開ノートとして記録しています。 1~10位 11~20位 記事の「正しさ」の検証基準としては、IPAの「安全なウェブサイトの作り方改訂第5版」を参考に、最低限として以下が記述されているかどうかを確認しました。 HTMLのエスケープ処理を行う 属性値はダブルクォートで囲む

  • CakePHPのファイルアップロードプラグイン「UploadPack」を使ってみた

    CakePHPのファイルアップロードプラグイン「UploadPack」を使ってみた CakePHPってすごい機能が満載ですが、ファイルアップロードに関しては標準機能ではさくっとできないっぽいです。(たぶん) そんな感じなのでいろいろとプラグインがあるらしいですが、この記事では「UploadPack」というのを使用してみます。 ※CakePHPのバージョンは1.3です。 投稿日2011年01月27日 更新日2011年04月02日 「UploadPack」をインストールする まずはファイルを以下ダウンロードしましょう。 szajbus / uploadpack 解凍したフォルダを「upload_pack」にリネームして、「app」→「plugins」にコピーします。 これでインストール完了です。 データベース(テーブル)作成 アップロードしたファイルの情報を入れるテーブルです。 最低限idとフ

    CakePHPのファイルアップロードプラグイン「UploadPack」を使ってみた
  • 役立つコードスニペットを保管しておける『my code stock』 | 100SHIKI

    よくあるツールだが、シンプルだし日語もOKだったのでご紹介。 my code stockを使えば、PHPやらJavaScriptSQLやらのちょっと使えるコードを保管しておくことができる。 もちろん、保管したコードはフォルダ分けして管理することもできるし、タグをつけておくこともできる。 またエディターは自動的にコードが色づけされるので見やすいのもうれしい。 日語での入力も検索も問題ないようだ。ブラウザさえあればどこからでもアクセスできるので便利ではなかろうか。

    役立つコードスニペットを保管しておける『my code stock』 | 100SHIKI
  • カラム数の多いテーブルの SELECT 用にカラムを明示的に列挙する、または GROUP_CONCAT() が便利と言う話 - 日向夏特殊応援部隊

    カラム数が結構多いテーブルに対して SELECT * とは書きたく無くて明示的にカラム名を指定したいって時に徒手空拳で頑張って書いても良いんですけど、information_schema 使えば楽出来るよねーって話。 CREATE DATABASE akb48; USE akb48; CREATE TABLE members ( id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(32) NOT NULL, nickname varchar(32) NOT NULL, birthday datetime NOT NULL, created_on datetime NOT NULL, updated_on datetime NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CH

    カラム数の多いテーブルの SELECT 用にカラムを明示的に列挙する、または GROUP_CONCAT() が便利と言う話 - 日向夏特殊応援部隊
  • postgres バックアップとリストア

    Postgresデータベースのすべての貴重なデータは、 定期的にバックアップする必要があります。 バックアップの 手順は簡単ですが、その下にあるテクニックや概念などを理解する 必要があります。 Postgres には、データのバックアップを行うために 2つの方法があります。 SQL dump ファイルシステムレベルのバックアップ 8.1. SQL Dump この方法の背後には、SQLコマンド群が書かれたテキストファイルを生成し、 サーバにそのファイルを読み込ませたら、ダンプされた時と同じ 状態を再構築する、と言ったものがあります。このため、 Postgresにはユーティリティプログラムとして pg_dumpを提供しています。このコマンドの 一般的な使用方法は下記の通りです。 pg_dump dbname > outfile お分かり頂けるように、pg_dumpは結果を標準出力に 書き出し

    Muke
    Muke 2010/06/30
    データベースの設置が出来たら次はリストアだ・・・・リストアェ・・・
  • PostgreSQLをコマンドラインで操作する

    今回のおもな内容 ソースからインストール コンパイルとバイナリのインストール PostgreSQLの初期化 コマンドラインからデータベースを作成 データベースオブジェクトを操作する テーブルにデータを追加 select文で検索 psqlで使えるコマンド一覧 PostgreSQLは、LinuxやFreeBSDおよび一部の商用UNIXでは、パッケージシステムを用いて簡単にインストールすることも可能です。ただしRedHat系のLinux(RedHatやTurbo Linux、Vine Linuxなど)では、/usr直下のディレクトリ(/usr/binや/usr/lib)にファイルが配置されて、後でメンテナンスする場合などに少し戸惑いを感じるかもしれません(単に筆者だけかもしれませんが^^;;)。 そういうときは、ぜひともPostgreSQLをソースコードからコンパイルしましょう。その手順を紹介し

    PostgreSQLをコマンドラインで操作する
  • CakePHP 1.3でのトランザクション処理の方法と注意点 - (DxD)∞

    処理内容 モデル「ModelA」のデータをModelA::save()で更新。 モデル「ModelB」のデータをhasManyの関連を持つデータとともにModelB::saveAll()で作成(トランザクション処理)。 (モデル「ModelB」のデータの作成に失敗した場合はエラー処理後に処理を継続。) モデル「ModelA」のデータをModelA::save()で更新。 $data = array(...); $this->ModelA->create(null); $this->ModelA->set($data); $this->ModelA->save(); ... $data = array(...); if (!$this->ModelB->saveAll($data)) { エラー処理 } ... $data = array(...); $this->ModelA->creat

  • MySQLでクロス集計してみた【1/2】

    マスタテーブルつくって説明すると面倒くさいので、直接商品名、色名をインサートするとし、テーブルを以下のように作っておく。 CREATE TABLE IF NOT EXISTS `history` ( `id` int(5) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `color` varchar(255) NOT NULL, `price` int(10) unsigned NOT NULL, `created` datetime NOT NULL, `modified` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `name` (`name`,`price`,`created`,`modified`,`color`) ) ENGINE=InnoDB DE

    MySQLでクロス集計してみた【1/2】
    Muke
    Muke 2010/06/18