タグ

refとmysqlに関するglcsのブックマーク (7)

  • MySQLのUNICODEベースのDBが標準でUTF8文字コードを返してくれない不思議 [Archive] - XREA&CORE SUPPORT BOARD

    s278サーバーのXREA+でphpとの連携としてMySQLを使い始めた者です:o サーバーの各バージョンは以下の通りです。 PHP - 5.1.6 MySQL - 5.1.16-beta phpMyAdmin - 2.8.2 (s278サーバー登録、DB作成、phpmyadminインストール以外、操作は行っていません) データベースをUNICODEで作成し、UTF8コードの2バイト文字データを含むテーブルを作成しました。 (※テーブル中の文字コードがUTF8なのはphpmyadmin上から、またエクスポート等で確認) このテーブルから、phpを使いDBからUTF8コードの文字列データを取り出そうと、 例として以下のような必要最低限のプログラムを実行しました。 <? $con = mysql_connect('localhost','accoun

  • SET NAMESは禁止?

    CakePHPは、PHP言語の高速開発用フレームワークです。日々、発展を遂げる各種フレームワークの動向を見極めつつ、日発のCakePHP応援ブログとして、最新情報をお届けします。 PHPセキュリティに詳しい大垣さんのブログ SET NAMESは禁止 (引用) ============ 脆弱性の説明は面倒ですが注意事項は簡単です。「DBMSをアプリケーションから利用する場合、文字エンコーディング設定は必ずAPIを利用する」つまり「SET NAMES(SET CLIENT_ENCODING等も)は禁止」です。 ============ 日語以外の記事では、「SET NAMESを使ってはいけない」とまで書いている記事が見つからなかったので、いまだすんなりと納得できていないのですが、今後、MySQL 4.1以上を入れた共有サーバなんかではどうすればいいんでしょうか…。 “SET NAMES

    SET NAMESは禁止?
  • 変数バインディングを使ってもSQLインジェクション対策にならない - Webと何かとその近所

    気がつけば4半期に一度更新するかどうかという状況になっています。 書きたい事があっても、いざ書こうと思っていろいろ調べていると新事実が次々と浮かび上がり、結局書き終えるのに丸一日かかってしまったりして、挙げ句でき上がった文章があれなのでその出来映えに泣きたくなり、結局更新から遠ざかってしまうのです。 そうこうしているうちに、書こうと思っていた事と近い内容の記事をid:t_komuraさんの所で見つけたので思わずコメントしてしまいました。 すでにid:hoshikuzuさんによるまとめもありますが、コメントだけなのもあんまりなので敢えて書こうと思います。びっくりするほど時期逃し過ぎ。 MySQL 4.1以降での文字の扱い MySQLはバージョン4.1以降で文字の扱いが大きく変わりました。 それまでのMySQLは、クライアント側で使っている文字(バイトの並び)がそのままDBに格納され、取得する

    変数バインディングを使ってもSQLインジェクション対策にならない - Webと何かとその近所
  • SET NAMESは禁止

    (Last Updated On: 2018年8月13日)MySQLには文字エンコーディングを変更する「SET NAMES」SQL文が用意されています。(PostgreSQLも同様のSQL文、SET CLIENT_ENCODINGがあります)この機能はSQLコンソールからは使ってよい機能ですが、アプリケーションからは使ってはならない機能です。SQLインジェクションに脆弱になる場合があります。 Ruby on Railsを読んでいて、ActiveRecordを説明している部分にMySQLの文字エンコーディングを変更する場合の例としてSET NAMESが利用されていました。アプリケーションからはSET NAMESは使ってはならない事を周知させるのは結構時間が必要かなと思いました。 PHPも5.2の途中からMySQLモジュールにlibmysqlの文字エンコーディング設定APIのラッパー関数が

    SET NAMESは禁止
  • utf8_general_ci と utf8_unicode_ci の違い - Ceekz Logs (Move to y.ceek.jp)

    以前までは、データベース MySQL を利用したアプリケーションを作るときは、文字コードとして EUC-JP を利用していました。最近は、国際化との兼ね合いなどから UTF-8 を利用するようにしています。 MySQLUTF-8 を扱う場合、照会順序として utf8_bin を使用していました(何も考えずに)。 utf8_bin の場合、部分一致探索 LIKE などの使用時に英字の大文字小文字が区別されてしまう。大文字小文字を区別されないようにするためには、照会順序として utf8_general_ci を使用すればよいのですが、他にも utf8_unicode_ci があることに気がつきました。 utf8_general_ci と utf8_unicode_ci では、どこが違うのだろう? utf8_general_ci also is satisfactory for both

    glcs
    glcs 2008/03/21
    誰かが作ったDBでテーブルごとにutf8_general_ciとutf8_unicode_ciが混在していて結合時にエラーが生じて困った
  • [Think IT] 第7回:トリガ (1/4)

    「第6回:ストアドプロシージャ」では、データベースサーバ内で動作するアプリケーションとしてストアドプロシージャを取り上げました。このストアドプロシージャと同様に、データベースサーバ内で動作するアプリケーションの代表格に「トリガ」があります。 そこで今回はこのトリガを取り上げ、PostgreSQLMySQLの違いを説明します。 「トリガ」とは、データベースに対して何らかの処理が加えられたときに、その処理をきっかけとして事前に用意したプログラムを自動的に起動する機能およびそのプログラムのことです。トリガは特殊なストアドプロシージャの一種で、処理の内容と起動する条件、実行するタイミングなどを指定し、設定を行います。 実はこれまでトリガを使用できたのはPostgreSQLで、MySQLでは使用できないといわれていました。しかしストアドプロシージャと同様に、MySQLのバージョン5.0においてトリ

    glcs
    glcs 2008/03/18
    MySQLとPostgreSQL,トリガ
  • MySQL Windows Vistaでのインストールエラー - journal de kyart プログラマ/通訳の備忘録

    MySQLを新しく購入したVistaにインストールしようとしたら、インストールは完了するものの設定ができない。MySQLのバージョンは5.0.51a。 設定用のMySQL Server Instance Config Wizardを立ち上げようとすると以下のようなエラーが表示される。 「このアプリケーションのサイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした。詳細については、アプリケーションのイベントログを参照してください。」 困ったのでアンインストールして別のインストールファイルをダウンロードして実行しても同じ。このアプリケーションのサイドバイサイド構成が正しくないため、アプリケーションを開始できませんでした。」との表示。 困ったので検索していると以下のURLが答えを教えてくれているので早速ためしてみる。 http://forums.mysql.com/read

    MySQL Windows Vistaでのインストールエラー - journal de kyart プログラマ/通訳の備忘録
    glcs
    glcs 2008/03/16
    この方法でインストールできた
  • 1