タグ

programmingとDatabaseに関するghostbassのブックマーク (60)

  • SQLインジェクション対策に正解はない

    最近、SQLインジェクションのネタが盛り上がってるようだ。下記のTogetterまとめあたりが震源地だろうか。 「プリペアードクエリが基だけど、動的に SQL を組み立てる場合もあるから、そういう場合に備えてエスケープも知っておいたほうがいいかも」 - Togetterまとめ まとめを読んだ感想としては、「どちらの意見も間違ってはいない」というものだ。前提あるいは見方が異なるために、見解の相違が生じているだけのように思う。SQLインジェクションについては私も若干思うところがあるので意見を書いておこうと思う。 攻撃を防ぐのは難しいSQLインジェクションをはじめとするセキュリティ対策が難しいのは、ひとつでも穴があると致命的なダメージを受け得るということだ。「どうやって効率よくコードを書くか」とか「コードのメンテナンス性を高めるにはどう書くべきか」みたいな議論とは全く質が異なる議論が必要になっ

    SQLインジェクション対策に正解はない
    ghostbass
    ghostbass 2013/12/15
    Linqで解決。あるいは同等のクエリービルダーを実装する。そんなに難しいことじゃない。
  • IPAの「安全なSQLの呼び出し方」が安全になっていた

    (Last Updated On: 2018年8月4日)IPAは「安全なSQLの呼び出し方」(PDF)を以下のURLから公開しています。 http://www.ipa.go.jp/security/vuln/websecurity.html 「安全なSQLの呼び出し方」は危険である、とするエントリを書こうかと思い、内容を確認するとそうでもありませんでした。 訂正:ツイッターで徳丸氏に確認したところ、徳丸氏もエスケープを含めたSQLインジェクション対策が必要であると考えられていた、ことを確認しました。徳丸氏にはセキュリティ専門家として大変不名誉な記述であった事を訂正し、深くお詫びいたします。内容についての修正は、識別子エスケープについてブログに書くとの事でしたのでブログの内容を確認してから修正します。 別冊の「安全なSQLの呼び出し方」は基中の基である「正確なテキストの組み立て」によるセ

    IPAの「安全なSQLの呼び出し方」が安全になっていた
    ghostbass
    ghostbass 2013/12/05
    ああ、そういう…
  • データベース設計徹底指南

    DBエンジニアのための技術勉強会(第3回)で使用した資料です。主にリレーショナルモデルと正規化について解説しています。リレーショナルモデルの限界について正しく認識してこそ、リレーショナルモデルを理解したと言えると思います。

    データベース設計徹底指南
    ghostbass
    ghostbass 2013/12/01
    ゆっくり読むべき
  • Redmineチケットの階層化の実装方法 - プログラマの思索

    Redmineチケットのテーブルissuesテーブルにlft, rgtというカラムがVer1.0からあって、何に使うのか分かっていなかったが、下記の記事を読んでようやく理解した。 ラフなメモ書き。 【元ネタ】 【Redmine】issuesテーブルのlft・rgtって? | Roppi.net SQLアタマアカデミー:第5回 SQLで木構造を扱う~入れ子集合モデル (1)入れ子集合モデルとは何か |gihyo.jp … 技術評論社 SQLアタマアカデミー:第5回 SQLで木構造を扱う~入れ子集合モデル (2)入れ子集合モデルにおける検索 |gihyo.jp … 技術評論社 SQLアタマアカデミー:第5回 SQLで木構造を扱う~入れ子集合モデル (3)入れ子集合モデルにおける更新 |gihyo.jp … 技術評論社 SQLアタマアカデミー:第6回 SQLで木構造を扱う~入れ子区間モデル (1

    Redmineチケットの階層化の実装方法 - プログラマの思索
    ghostbass
    ghostbass 2013/02/19
    並べ替えとか挿入とか結構な負担になる。あとバグとかでleft,rightが不正な状態になった場合手に負えない。
  • 業務ロジックをデータモデリングはどこまで表現できるか? - プログラマの思索

    「業務ロジックをデータモデリングはどこまで表現できるか?」について考えたことをラフなメモ書き。 業務システムでは、データが命。 データには個人情報が含まれるために管理が重要だったり、売上データやPVデータから、どの層の顧客から売上やアクセスが多いのか、を計測することもできる。 すると、それらデータを格納するRDBが必要になり、そのテーブル設計が重要になってくる。 顧客の業務プロセスをモデリングする場合、最近ならOOAが主流。 でも、DOAの方が現代は重要性を増していると考えている。 例えば、Railsのような優れたWebフレームワークがあれば、ER図さえきちんと作れば、DBマイグレーションとプログラム雛形を自動生成することによって、テーブルのCRUDのような画面はすぐに作れてしまうからだ。 日におけるデータモデリングの歴史は意外に古い。 TH法、T字型ER、渡辺さんのXEAD Model

    業務ロジックをデータモデリングはどこまで表現できるか? - プログラマの思索
    ghostbass
    ghostbass 2012/11/04
    入れ子集合モデルはart of sqlで壮絶にディスられてる。
  • https://jp.techcrunch.com/2012/08/21/20120818oracle-makes-more-moves-to-kill-open-source-mysql/

    https://jp.techcrunch.com/2012/08/21/20120818oracle-makes-more-moves-to-kill-open-source-mysql/
    ghostbass
    ghostbass 2012/08/21
    そういう神託が発せられた、と。これからは聖処女に祈りをささげるべし
  • 第3回 MongoDB勉強会 ダイジェスト

    「第3回 MongoDB 勉強会 in Tokyo」 : ATND 先週土曜日(2011年5月14日)にフューチャーアーキテクトさんのセミナールームにて行われたMongoDBの勉強会に行ってきました。 MongoDBの仕様・機能などの体系的な話からチューニングの話、開発に利用する話、プロダクションとして運用している話と、バランスよくまとまっていてとても勉強になりました。 RDBとの違いや特有の挙動をきちんと把握して利用すれば、十分プロダクションで利用出来るというビジョンが見えました。 詳細は各発表者の方のスライドを見るとわかると思いますが、当日会場でメモしたものでダイジェスト的にまとめました。 MongoDB勉強会は毎月開催(予定)しているそうなので、興味を持たれた方は是非参加して見てください。 MongoDBコミュニティー:MongoDB JP | Google グループ 【発表1】Mo

    第3回 MongoDB勉強会 ダイジェスト
    ghostbass
    ghostbass 2012/08/08
    いいまとめ
  • https://www.testdata-generator.com/

    テストデータの管理 TestData Generatorはユーザが定義したテストデータの設定を管理しています。 一度作成した定義を使用して、何度でもテストデータの作成が可能です。 表現できるデータ TestData Generatorには基的なデータ型が用意されています。 数値(整数、小数、連番) 日時(日付、時刻) 文字列(固定、ユーザ定義) 定義済データ(氏名、住所、性別等) データの結合や、関連のあるデータ列の内容を一致させることも可能です。

    ghostbass
    ghostbass 2012/05/21
    便利そうだ
  • フレームワークで語るMVCの話 : PHP Advent Calendar #19 - basuke の日記

    この記事はPHP Advent Calendarの19日目の記事です。 プログラマ10人集まれば、誰かMVCうんちく語るのが常。みんな大好きMVCの話です。僕は今年でPHPプログラマとして10年が経過しました。この節目の年に、これまで触ってきたフレームワークを振り返り、徹底的な個人的主観でMVCについて語っていきたい思います。忘年会シーズンでお疲れの皆様、ご安心ください。コード・ゼロでお届けします。 いろんな言語のいろんなフレームワークを触ってきたつもりですが、Javaはやってなかったんであまり詳しくないです。主にRails以降のフレームワークを見ていきます。 Railsの功績 PHPプログラマとしてRailsの登場で何にびっくりしたかというと、次の三つです。 router ActiveRecord cliと対話型shell ActiveRecordは魔法のように見えましたが、いずれ出ても

    フレームワークで語るMVCの話 : PHP Advent Calendar #19 - basuke の日記
    ghostbass
    ghostbass 2012/03/20
    ActiveRecordをゲートウェイにしか使わない、という話しとそれがモデルじゃない、という話しは別だと思うよ。
  • 何が正しいのかを考える際は、正しさの基準が必要 - ockeghem's blog

    大垣さんの寄稿記事「第44回 セキュリティ対策が確実に実施されない2つの理由:なぜPHPアプリにセキュリティホールが多いのか?|gihyo.jp … 技術評論社」のまとめにて、『最後に「何が正しいのか?」常に考えるようにしてください』と書かれています。この部分は、私への反論のようですので、このエントリで返答したいと思います。 大垣さんの主張 先にも述べたように、大垣さんはこのエントリの「まとめ」として以下のように書かれています。 最後に「何が正しいのか?」常に考えるようにしてください。 http://gihyo.jp/dev/serial/01/php-security/0044?page=2 この主張自体には私も大賛成です。大垣さんの記事は以下のように続きます。 例えば,SQL文を作成する場合にリテラル(パラメータ)を文字列としてエスケープすると浮動小数点型のデータが正しく処理されないデ

    何が正しいのかを考える際は、正しさの基準が必要 - ockeghem's blog
  • MySQLにおけるレプリケーション遅延の傾向と対策

    レプリケーションはMySQLで最もよく使われる機能のひとつだ。レプリケーションは基的に非同期でデータの複製を行う仕組みになっているのだが、非同期故にどうしても逃れられない問題がある。そのひとつが今回のテーマ、遅延である。というと、MySQLのレプリケーションはすぐに遅延が生じてしまうように感じてしまうかも知れないが、そのようなことはない。ほとんどの場合は即座にスレーブの更新が行われる。 なぜ遅延は発生するのか、どのように遅延が起きていることを調べるのか、どのように回避するのかということをエントリでは解説したい。うまく遅延と付き合って、MySQLのレプリケーションをより快適に運用してもらえればと思う。 そもそも遅延とは何かMySQLのレプリケーションは非同期で行われる。これは準同期でも同じであり、スレーブにおいて更新が起きるのはマスターよりも一瞬遅れてしまう。これは非同期であるが故に逃れ

    MySQLにおけるレプリケーション遅延の傾向と対策
  • IBMもNoSQLデータベースを製品化へ。オープンソースを基に

    オラクルがNoSQLデータベース製品をリリースしたのに続き、IBMも企業向けデータベースとしてNoSQLの製品化を明らかにしました。 IBMのデータベースサーバ担当CTOでバイスプレジデントのCurt Cotner氏は、10月23日にラスベガスで開催された同社のイベント「Information OnDemand 2011」で、NoSQLデータベース製品の提供を明らかにしました。来年登場予定で、DB2とInformixユーザーに無償で提供されるとのこと。 同氏の発言は、Information OnDemand 2011のインタビュー動画で参照できるほか、米SearchDataManagement.comの記事「IBM to unveil NoSQL technology inside DB2」が伝えています。 オープンソースのNoSQLデータベースがベース 米SearchDataManage

    IBMもNoSQLデータベースを製品化へ。オープンソースを基に
    ghostbass
    ghostbass 2011/11/01
    Oracle,IBMときた。MSもなんかやってたよな?
  • オラクルがNoSQLに本気。エンタープライズ向け「Oracle NoSQL Database 11g」公開。オープンソース版も登場

    米オラクルはエンタープライズ向けNoSQLデータベース「Oracle NoSQL Database 11g」の公開を発表。評価版の無償ダウンロードを開始しました。オープンソースライセンスに基づくコミュニティ版も準備中(10月26日現在、ライセンス承認待ち)とのことです。 Oracle NoSQL Databaseは、同社のキーバリューストアであるOracle Berkeley DB Java Editionをベースに、分散処理機能、ロードバランス、管理機能、マルチノードバックアップ機能などを追加したもの。大規模なデータを高速に扱うことができ、高い可用性とスケーラビリティを実現すると説明されています。 分散キーバリューストアで単一障害点を排除 NoSQL Databaseの基的なアーキテクチャは、プライマリキーのハッシュによって指定されたノードにキー/バリューのペアを書き込む分散キーバリュ

    オラクルがNoSQLに本気。エンタープライズ向け「Oracle NoSQL Database 11g」公開。オープンソース版も登場
    ghostbass
    ghostbass 2011/10/26
    あとでみる
  • グーグルがNoSQL軽量ライブラリ「LevelDB」をオープンソース化。SQLiteとの比較ベンチマークも公開

    グーグルがNoSQL軽量ライブラリ「LevelDB」をオープンソース化。SQLiteとの比較ベンチマークも公開 キーバリュー型データストアは、いわゆるNoSQLデータベースの代表的な種類の1つ。LevelDBは以下のような特徴を備えています。 基的な操作は、Put(key,value), Get(key), Delete(key) 1つのトランザクションとして複数の変更操作が可能 データは自動的に圧縮し保存される SQLite、Kyoto TreeDBとの比較ベンチマークも LevelDBC++で書かれたライブラリで、今後のChromeブラウザのIndexedDBはLevelDBで実装されると説明されています。 Upcoming versions of the Chrome browser include an implementation of the IndexedDB HTML5

    グーグルがNoSQL軽量ライブラリ「LevelDB」をオープンソース化。SQLiteとの比較ベンチマークも公開
    ghostbass
    ghostbass 2011/07/29
    "Key" value storageなのにランダムアクセスが遅いの?
  • ソーシャルアプリのプロトタイプ制作にMongoDBを活用

    ソーシャルアプリのプロトタイプ制作にMongoDBを活用 1. ソーシャルアプリのプロトタイプ制作にMongoDBを活用~PHP+Sleepy.Mongooseでお手軽永続化~Fungoing LLC / Satoshi MiyauchiTwitter : @bibrost 2. Profile 宮内 聖 / Satoshi Miyauchi @bibrost 自宅警備員(週休2日) 兼 Fungoing LLC 代表 兼 株式会社監査と分析 システム開発担当 兼 株式会社ニジボックス 傭兵 … etc Webデザイン、映像編集、Webサービスの開発など・・・いろいろ 引きこもりフリーランス生活。と思ったら最近はたまに出勤。 Scala、MongoDB、Solrをメインにやってます ※お仕事、協業のご相談は随時受付中 Page : 1 3. Recent Works ( with Mong

    ソーシャルアプリのプロトタイプ制作にMongoDBを活用
  • OracleのSQLのアンチパターンの問題集1

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    OracleのSQLのアンチパターンの問題集1
    ghostbass
    ghostbass 2011/05/19
    このクエリーどこかで見たことある
  • グーグル、NoSQL軽量ライブラリ「LevelDB」を公開。ChromeブラウザのIndexedDBとして採用

    LevelDBSQLをサポートせず、クライアント/サーバ型でもなく、シングルプロセスからアクセスされることを想定したいわゆるNoSQLの高速なキーバリュー型データストアを実現するためのライトウェイトなライブラリだと説明されています。 ChromeブラウザでHTML5の仕様として策定中のIndexedDBを実装するものとして開発されたようです(ドキュメントに明記されていないのですが)。 LevelDBを開発した理由 LevelDBのWebサイトによると、LevelDBは以下の主な機能を備えています。 基的な操作は、Put(key,value), Get(key), Delete(key) 1つのトランザクションとして複数の変更操作が可能 データは自動的に圧縮し保存される Hacker Newsの記事によると、当初はLevelDBを開発する代わりに平林幹雄氏が開発したTokyo Cabin

    グーグル、NoSQL軽量ライブラリ「LevelDB」を公開。ChromeブラウザのIndexedDBとして採用
  • ソーシャルゲームのためのデータベース設計

    2. 自己紹介  MySQL/Linux周りのスペシャリスト  2006年9月から2010年8月までMySQL家(MySQL/Sun/Oracle)で APAC/US圏のMySQLコンサルティングに従事  主な著書に「現場で使えるMySQL」「Linux-DBシステム構築/ 運用入門」「Javaデータアクセス実践講座」  DeNAでの主な役割  安定化/パフォーマンス/運用周りの中長期的な改善活動  L3サポート/運用/トラブルシューティング – 難度の高いMySQL周りの問題の根原因の特定と解決  多くのプロジェクト支援  社内勉強会/トレーニング – MySQLやデータベース周りのベストプラクティスを社内で共有し、 技術スキルを底上げする  技術マーケティング – 国内外のカンファレンスや、技術雑誌等

    ソーシャルゲームのためのデータベース設計
    ghostbass
    ghostbass 2011/01/17
    ゲームだけではないな。
  • ドメインロジックとSQL

    以下の文章は、Martin Fowler による Domain Logic and SQL の日語訳である。 データベース指向ソフトウェア開発者とメモリ上(in-memory)アプリケーションソフトウェア開発者との間のギャップは、ここ数十年、徐々に広がってきている。このギャップが原因で、データベースの機能(SQLやストアドプロシージャ)をどのように扱えばよいのかという議論が数多く巻き起こっている。ここでは、ビジネスロジックを SQL に置くべきか、それともメモリ上のコードに置くべきかといった問題について、主にパフォーマンスと更新性の観点から考察を行う。考察には簡単な例を使うが、SQL クエリはしっかりとしたもの(rich SQL queries)を用いるので悪しからず。 エンタープライズアプリケーション(訳注:以下、EA)構築に関する(私の近著『P of EAA』など)を読むと、ロジッ

  • カラム情報(主キー、データ型、桁数等)を取得するには - OKWAVE

    テーブルに格納されているカラム情報(カラム名、主キー、データ型、データの桁数)を取得したいと考えています。 主キー情報とそれに付随するカラム情報は現在下記のSQL文で取得しています。 SELECT C.TABLE_NAME , COL.COLUMN_NAME, C.CONSTRAINT_TYPE, COL2.DATA_TYPE, COL2.DATA_LENGTH FROM USER_CONSTRAINTS C, USER_CONS_COLUMNS COL, USER_TAB_COLUMNS COL2 WHERE C.TABLE_NAME = COL.TABLE_NAME AND C.CONSTRAINT_NAME = COL.CONSTRAINT_NAME AND C.TABLE_NAME = COL2.TABLE_NAME AND COL.COLUMN_NAME = COL2.COLUM

    カラム情報(主キー、データ型、桁数等)を取得するには - OKWAVE