・リンク先で下記のように書かれているのですが、SET NAMESは使わない方が良いでしょうか?
・SET CHARACTER SETなら良いでしょうか?
・.cnfを使用しない場合は、直接指定も可?
>SET NAMES だとMySQLサーバには charset が伝わるけれどクライアント側は latin1 のままなのでエスケープ処理で問題が出る可能性があります
http://qiita.com/ngyuki/items/d88a4df860abb51eb714
No.3ベストアンサー
- 回答日時:
以前にも貼ったと思いますがもう一度w
http://qiita.com/mpyw/items/b00b72c5c95aac573b71 …
5.3.5より古いバージョンを使っていること自体にもう問題があるといっても過言ではないですね。最新リビジョンの5.3.29に更新すべきです。というよりも根本的にマイナーバージョンで見て、5.3系のサポートは切れているので使うべきではありません。5.4以降を使いましょう。5.6または5.5がおすすめです。
ここからは記事の内容と重複しますが一応…
・「SET NAMES」「SET CHARACTER SET」を使ってもデフォルトの「latin1→UTF-8」のケースではエスケープ漏れが発生することはありません。ngyukiさんが心配されていますが問題ありません。但し、ソースからビルドしている場合で、コンパイルオプションにてデフォルトの文字セットを「cp932(Shift_JIS)」に変更している場合は脆弱性となります。
・「SET NAMES」はMySQLに送る文字列にのみ作用しますが、「SET CHARACTER SET」は送る文字列に加え送られてくる文字列にも作用します。処理が重めになるので使わない方がいいです。
回答ありがとうございました。
>5.3.5より古いバージョンを使っていること自体にもう問題があるといっても過言ではないですね
・あまり意識していなかったのですが、5.3ってそういう扱いなんですね
・古いバージョンを使用し続ける理由もないので、(先ずは)PHP5.4へ上げました
・いつかはバージョンアップしなければいけないと思っていたので、いい機会になりましたー
No.4
- 回答日時:
一つ重要なことを書き忘れました。
PDO::ATTR_EMULATE_PREPARES
このオプションをFalseに設定している場合は先ほど危険と説明したケースにおいても安全です。デフォルトはTrueなのでご注意を。
No.1
- 回答日時:
phpスクリプト側の話ですよね(MySQLサーバ側の設定は不問とします)。
わざわざset namesやset character set を使う意味はありません。php5.3.6以降でPDO接続を使うなら、DSNで指定するべきです。
http://www.php.net/manual/ja/ref.pdo-mysql.conne …
MySQLiならmysqli_set_charsetですね。
http://www.php.net/manual/ja/mysqli.set-charset. …
#ネイティブなMySQL関数はすでに非推奨なので割愛ww
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php文字列中のシングルクオート...
-
検索に関する文字コード
-
printが「ダブルスタンダード」...
-
if ('0.0'=='0'){ の0.0とは何
-
PHP4から5への移行に伴うFatal ...
-
3つ以上の論理積は利用可能なの...
-
.phpファイルが、表示されない
-
PHP4対応のサーバーではinclude...
-
PHPのif文でその処理を途中で抜...
-
フォントの色を変えるには?
-
zip圧縮の種類について
-
トランザクションが原因?DBに...
-
VB.NET 最下位のディレクトリ名...
-
.phpと.incファイルの違いはな...
-
PHPでFilename cannot be empty...
-
CSV出力にHTMLが入ってしまう
-
makefile でファイルをコピーす...
-
$_SESSION 有効期限をブラウザ...
-
CFileDialogの最初のディレクト...
-
FTPコマンドでディレクトリごと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php文字列中のシングルクオート...
-
PHPにおいて16進数のアスキー文...
-
IF文の引数をクォーテーション...
-
if ('0.0'=='0'){ の0.0とは何
-
PHPのプログラムについて
-
リダイレクトできません。クエ...
-
PHP4から5への移行に伴うFatal ...
-
文字列を%+2桁のヘキサ
-
PHPでカンマ区切り文字列を数値...
-
PHPでPが2個あるので分かりず...
-
PHPのGETとPOSTの処理を学習中...
-
【比較演算子】偶数・奇数識別...
-
xmlの宣言文をPHPで出力するには
-
PHPのif文でその処理を途中で抜...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
FTPコマンドでディレクトリごと...
-
.phpと.incファイルの違いはな...
-
CFileDialogの最初のディレクト...
-
「クラス関数」「メンバ関数」...
おすすめ情報