サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは本日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。
トランザクションとは 1つの作業単位として扱われるSQLクエリの集まりです。 複数のUPDATEやINSERTをひとつの集まりとして、 それらのクエリがすべて適用できた場合のみデータベースに反映します。 ひとつでも適用に失敗したクエリがあった場合は、そのまとまりすべてのクエリの結果は反映しません。 ACID特性 トランザクション処理に求められる4つの特性です。 原子性 (Atomicity) トランザクションに含まれる手順が「すべて実行されるか」「すべてされないか」のどちらかになる性質。 一貫性 (Consistency) どんな状況でもトランザクション前後でデータの整合性が矛盾なく保たれる性質。 分離性 (Isolation) トランザクション実行中は、処理途中のデータは外部から隠蔽されて他の処理に影響を与えない性質。 永続性 (Durability) トランザクションが完了したら、シス
オレオレSQLセキュリティ教育は論理的に破綻している | yohgaki's blog 「プリペアードクエリが基本だけど、動的に SQL を組み立てる場合もあるから、そういう場合に備えてエスケープも知っておいたほうがいいかも」 - Togetterまとめ SQLインジェクション対策で大垣靖男氏は何を勘違いしていたか | [ bROOM.LOG ! ] エスケープとプレースホルダをめぐる議論 - Togetterまとめ SQLインジェクション対策としてのプリペアドステートメントとエスケープについての議論 - Togetterまとめ IPAの「安全なSQLの呼び出し方」が安全になっていた | yohgaki's blog SQLへの安全な値の埋め込み方について、ここ数日で色々議論というか意見の投げ合いがありましたが、自分としての考えをまとめておきます。 1. SQLに値を埋め込む場合は、プリペ
はじめに SQLに対するよくある誤解の1つに、「SQLは帳票作成のための言語だ」というものがあります。確かに、SQLは定型・非定型を問わず、さまざまな帳票や統計表を作成するシステムで利用されています。そのこと自体に問題はありませんが、エンジニアにとってもSQLにとっても不幸なことは、SQLの本来の用途ではない結果のフォーマット整形までがSQLに求められることです。あくまでSQLはデータ検索を目的に作られた言語だからです。 しかし同時に、SQLは多くの人が考えているよりずっと強力な言語です。特に近年は、そうした用途にも対応すべく、OLAP関数をはじめとするレポート作成のための機能が多く取り入られるようになりました。システム全体としてソースを簡略化でき、十分なパフォーマンスを得られるなら、SQLの力を利用する価値は十分にあります。 本稿では、外部結合(OUTER JOIN)を利用したフォーマッ
SQLのLIKE検索は非常に便利です。しかし、データ量によっては使ってはいけません。 例えば、 WHERE 備考 LIKE '%大阪%' とすれば備考欄に'大阪'が含まれているレコードをすべて取得することが可能ですが、当然、インデックスは使えません。必ずテーブルをフルスキャンすることになります。 そもそも、LIKE検索をするような項目はデータ量が多く、数百Byteから数千Byteの領域を取っていることもあるでしょう。RDBMSのデータに対するアクセスは、カラム単位でもレコード単位でもなく、ブロック(ページ)単位になりますので、レコード数によっては非常に大量のアクセスが発生します。 ブロック単位のアクセスはデータの入り方によって何とも言えないので、レコード長で考えるとすると、数百〜2000Byteのレコード長で1万件(数M〜20MByte)前後で、検索頻度が少ないのであればLIKE検索で十分
「安全なSQLの呼び出し方」というSQLのセキュリティに焦点を当てたドキュメントが、2010年3月にIPA(独立行政法人情報処理推進機構)から公開された。 これは2006年1月から提供されている、Webサイト開発者や運営者向けのセキュアWebサイト構築のための資料「安全なウェブサイトの作り方」の別冊として書かれたものである。「安全なウェブサイトの作り方」が92ページなのに対して、SQLインジェクションについてだけで40ページもの分量がある。なぜこんなに分厚いのだろうか。 このドキュメント作成に協力したという、独立行政法人産業技術総合研究所 情報セキュリティ研究センターの高木浩光氏にお話を伺うことができた。高木氏は個人ブログ「高木浩光@自宅の日記」で、セキュリティ関連の問題を追求する論客としても知られている。筆者も以前、この連載の「今夜わかるSQLインジェクション対策」の回(2006年11月
2010 年 3 月 「安全なウェブサイトの作り方」 別冊 安全な S Q L の 呼び出し方 本書は、以下の URL からダウンロードできます。 「安全な SQL の呼び出し方」 http://www.ipa.go.jp/security/vuln/websecurity.html 目次 目次.....................................................................................................................................................................................................2 はじめに.................................................
第6回SQL流行間比較(2) 直近、直近の1つ前、そのまた1つ前… ミック 2009-05-19
ちょっとSQL Injectionについて未だに情報が少ないのにいらついていたので。 というか対策ばっかりで何ができますよーってのはほとんどログインできますよーくらいじゃねえか。 具体的な攻撃方法もわからずにぼんやり対策してるだけの人多いような気がするのでちょっと攻撃方法書いとく。 SQLインジェクションってなに? アプリのユーザ入力領域からSQL文を注入されてしまうこと。 サーバでこういうコード書いてると、user_nameに「' or '1'='1';#」とか書かれて素敵なことになる。(mysqlの場合) String sql = "SELECT * FROM users WHERE = name = '"+user_name+"' AND password='"+user_password+"'"; 簡単に言うと、開発者の意図しないSQLをユーザの入力によって行う攻撃手法ですね。 S
■最新情報 黒猫ソフトウェア工房のホームページは引っ越しました。 新しいホームページはこちら → http://kuronekosoft.ewinds.net/ 5秒後に自動的にジャンプします。 黒猫 SQL Studio は、あらゆるデータベースに接続可能な汎用SQL開発環境です。黒猫 SQL Studio には、SQLを手早く作るための入力支援機能や、作ったSQLをプロジェクトとして管理する機能が用意されています。 ■黒猫 SQL Studio について知りたい → 黒猫 SQL Studio ■黒猫 SQL Studio を紹介していただきました → SQL文をGUIで作成できるデータベース開発環境... - 窓の杜 → 使いやすいSQL実行環境... - Unofficial DB2 BLOG → どんなDBもGUIでSQL作成... - Hibi日記 → データベース開発の必需品
Top 15 free SQL Injection Scanners - Security-Hacks.com あとで試す。トップ15だけど順位がよくわからない。上から1位? SQLIer Sqlbftools SQL Injection Brute-forcer (.tar.gz) SQLBrute (.py) BobCat sqlmap: a blind SQL injection tool Absinthe :: Automated Blind SQL Injection SQL Injection Pentesting TooL SQID - SQL Injection digger Blind SQL Injection POC (.pl) SQL Power Injector FG-Injector Framework sqlninja: a SQL Server inject
前回までは,主にクロスサイト・スクリプティングのぜい弱性とその対策について解説してきた。最終回となる今回は,クロスサイト・スクリプティング以外の「インジェクション系」ぜい弱性について解説する。具体的には,SQLインジェクション,OSコマンド・インジェクション,HTTPヘッダー・インジェクション,そしてメールの第三者中継である。 SQLインジェクション対策にはバインド変数の利用が最適 まず,SQLインジェクションから見ていこう。対策には二つの方法がある。一つは,SQLの「バインド変数(注1)」を使う方法である。バインド変数の書式はプログラミング言語によって異なるが,一例として,Perlを使った場合に,パスワード認証のSQLをバインド変数で書き換えた例を示す(図1)。 (注1) 「準備された文(Prepared Statement)」というのがJIS SQLでの用語だがあまり普及していない。バ
いいね! 0 ツイート B! はてブ 447 Pocket 2 データベースの設計時にER図をかくことが多いと思いますが、SQL-designerというウェブベースのツールが非常に使いやすいく、デザイン的にも綺麗で便利。 MSproject等のデータベース設計を行う専用ソフトは非常に多くあるが、どれもインストールが必要だったり、設定ファイルが必要だったり、ソフトが重かったり、環境依存が激しかったりして、使いにくい。 使いかたは簡単で、 1.ウェブページにいって 2.テーブルやフィールドを追加する 3.プリントアウトorXMLエクスポート だけ。 データの型なども選択できて、設計が終わったら、SQL文をそのまま発行したり、作ったEQ図をXMLでエクスポートやインポートすることも可能。Javascriptベースなので、めんどくさいインストールや環境依存もなし。 ウェブ上でやるのは、セキュリティ
■ 駄目な技術文書の見分け方 その1 はてなブックマークのホッテントリを見ていたところ、300を超えるユーザに登録された以下の記事があった。 今夜分かるSQLインジェクション対策, 上野宣, @IT, 2006年11月2日 また上野宣か。顔見知りなのでズバリいくことにする。 しかし、その対策はまだ本当に理解されていないように思える。 へえ。 終わりの方を見てみると、 Webアプリケーションの対策 入力値のSQLの特殊文字を適切にエスケープ 入力値=プログラム(プロセス)に外部から入ってくるもの シフトJISの場合には1バイト文字を整理 SQLの記述をなくすためにO/R(Object/Relational)マッピングを活用 攻撃者に役立つ情報を与えないために、不要なエラーメッセージ(データベースが出力するエラーなど)の表示を抑止 対策に「準備された文」(prepared statement)
Ogawa::Memoranda さんが指摘されている、MovableType (以下、MT)の 3.31 ブランチの、mt_entry 表と mt_objecttag 表の結合で、SQLite の最適化が不適切になる理由を調べてみました。 結論を先に述べると、mt_entry.entry_status へのインデックスが存在するために、SQLite の最適化ルーチンがだまされていました。SQLite ではインデックスが存在すると、行のふるい落しがおこなわれることを暗に期待するのですが、残念ながら、通常のブログにおいては mt_entry.entry_status = 2 の制約条件は、行のふるい落しに寄与せず、mt_entry のほとんどの行を参照していました。 さて、問題は次のような単純な結合をもつ SELECT 文です(注: mt_entry 表と mt_objecttag 表には同
SQLインジェクション脆弱性が話題になることがずいぶん増えた。 従来のC/Sアプリケーションでも同じ問題を抱えていたが、不特定多数から使われうるWebアプリでは特に危険が高い。SQLインジェクションによるアタックがニュースになるのは、ほぼ全てWebアプリの脆弱性としてだ。これについて、ちょうど関連する記事が出た。 SQLインジェクション攻撃が激増 (ITmedia) SQLインジェクションについては、採るべき対策はずいぶん前から言われ続けている。しかし、いつまでたっても脆弱性を抱えたシステムは減らない。 これについてはずっとモヤモヤしていたものを感じていた。ちょうどよい機会なので、忘れないうちにモヤモヤを形にしておく。 (註) ここにまとめているのは根本原因の推測のメモであって、SQLインジェクションに対するなんらかの具体的方策を提起するものではありません。考察の誤りや事実誤認があればコメ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く