• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:フレームワークでMySQLの暗号化)

PHPフレームワークでMySQLのデータを暗号化する方法

このQ&Aのポイント
  • PHPのフレームワークでMySQLのデータを暗号化する方法を知りたいです。現在、メジャーフレームワークではその機能が実装されていないようです。
  • MySQL内のデータを暗号化する需要は高いと思われますが、メジャーフレームワークでその機能が標準で提供されていないことに疑問を感じています。
  • O/Rマッパーを使っているため、独自に拡張する方法しかないのか気になっています。詳しい方に教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

「MySQL 可逆暗号化」で検索してみた結果、 http://www.detelu.com/blog/?p=245 こちらのブログのエントリでSQL文で暗号化を掛ける方法が記載されておりました。 後は、ご利用のフレームワークのO/Rマッパーで、渡す値に対して関数を指定できるかが鍵となりますが、後は 「MySQL 可逆暗号化 CakePHP」などと、ご利用のフレームワーク名を後ろにつけて検索するとソレっぽい記事が出てくると思います。 検索方法の案内のみで申し訳ないです・・・

xxyybbaa55
質問者

お礼

回答ありがとうございます。 どうやら自分で拡張するしかないみたいです。 検索の仕方がダメなのかもしれないですが。。 んーフレームワークもまだまだまだ発展途上ですね。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • PHPの可逆暗号化関数について

    こんにちは、現在PHP ver5とpostgreSQLでデータベースと連携させて使っているのですが、 テーブル内にデータを入れる際、今は平文のまま登録していますが、 この文字列を、暗号化してデータベースに登録し、取り出したい時に複合化して平文に戻せる関数はどういったものがあるでしょうか。 IDやパスワードといった文字列ではないので不可逆暗号化関数では元のデータベースの平文が分からなくなってしまうと思うのですが、 これを暗号化して登録しておき、抽出する際に元に戻す作業をしたいのです。 これってURLエンコード・デコードとは違いますよね・・・。 長くなりましてすみません。わかる方よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのMySQLモジュールのインストール方法

    FedoraCore 4 MySQL 4.1.14 PHP 5.0.4    を使ってます。 PHPからMySQLが繋がらないためずっと悩んでいましたが、どうやらPHPのMySQLモジュールというのがインストールされていないらしいことがわかりました。 これまで、すべてyumで自動的にインストールしてきたため、拡張モジュールを新たにインストールする方法がわかりません。(かなりネットで検索したのですが、rpmで最新版をインストールする方法がわかりませんでした・・・) php-mysqlパッケージを配布しているところと、rpmでインストールする方法を教えてください。m(_ _)mペコリ 一応、これまで実行してダメだったPHPとエラーも書いておきます。 ■PHP <?PHP $conn = mysql_connect("localhost", "usr","pass"); mysql_select_db("kisop", $conn); $res = mysql_query("SHOW TABLES",$conn); if($res){ print("データ獲得に成功しました。"); }else{  print("失敗");  } ?> ■エラー Fatal error: Call to undefined function mysql_connect() in /var/www/html/simple_connect.php on line 5

    • ベストアンサー
    • PHP
  • MySQLにデータを入れる際、エンコードしたほうが...

    PHPとMySQLを組み合わせて掲示板を作成しているのですが、SQLインジェクションの心配や、検索を簡単にするためDBに入力する際、すべてのデータをPHP側でエンコードし入力し、表示するときのみでコードするやり方はPHP的にもMySQL的にもどうなのでしょうか? 自分的には多少データ量は増えるものの、英数字や=などの記号のみを入力するだけなので、比較的検索は簡単になると思います。また、SQLインジェクションなども記号が変換されるため防ぐことができると考えています。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • VB.NetによるMySQL接続について

    VB.NET(2012)よりMySQLへの接続についてご教示ください。 現状、下記のようなエラーが発生し、DB接続ができない状況です。 'MySQLConnection' は、名前空間 'MySql.Data.MySqlClient' では不適切です。 'MySQLCommand' は、名前空間 'MySql.Data.MySqlClient' では不適切です。 'MySQLDataReader' は、名前空間 'MySql.Data.MySqlClient' では不適切です。 【ソース】 Imports MySql.Data.MySqlClient Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim con As MySQLConnection Dim cmd As MySQLCommand Dim dr As MySQLDataReader End Sub End Class 【設定】 Connector/NETのインストール メニューのプロジェクト→参照の追加→拡張よりMySql.Dataを指定 メニューのプロジェクト→DB_Accessのプロパティ→参照よりMysql.Data→プロパティ内のローカルコピー:True 参照よりインポートされた名前空間(I)→Mysql、Mysql.Data・・・その他Mysqlのチェックをオン 【環境】 OS:Windows7 開発:.Net2012 DB・サーバ環境:XAMPP(アパッチ、MySQL) HPでいろいろ調べましたがどれも似たような内容の為、解決できておりません。 何か足りないのでしょうか。 何卒、ご教示のほどよろしくお願い致します。

  • phpでの画像出力

    フォームでアップロードした画像(jpg)を、base64でエンコードしてテキストとしてDBに格納しています。 そのデータをDBから取り出して、PHPで出力したいのですが、上手く行きません。 下記のような手順で試しましたが、ダメでした。 ※php5とMySQLです。 $img = base64_decode("※DBから取り出したテキスト"); header("Content-type: image/jpeg"); echo $img; 尚、下記のような形では画像表示出来ましたが、出来ればphpからの出力をしたいと考えています。 <img src="data:image/jpeg;base64,※DBから取り出したテキスト" /> php初心者ですが、よろしくお願い致します。

    • ベストアンサー
    • PHP
  • MySQLに登録すると文字化け

    Perlのスクリプトで、MySQLにユーザー情報を登録しているのですが、 二つのDBに登録しています。 一つ目のDBはEUC-JPで、もう一つがUTF-8のMySQLになっています。 具体的には、最初はあるCMSのユーザー登録を別のPerlスクリプトで行い正常に保存されていたのですが、今年の春頃からWordpressも使う必要があり、そちらがUTF-8のDBなのです。 英数字なら問題なく登録可能なのですが、日本語が入ると、UTF-8のDBでは文字化け等が発生して、正常に登録されませんでした。 ちなみに、Perlスクリプト自体はEUC-JPで記述・保存されているファイルなのですが、先述の通り、先のCMS側のDBがEUC-JPなので、このPerl自体をUTF8にするわけにもいかず・・・ 以下のようなソースになっています。 ------------------------------------------------------------------------ # データベースへアクセス $dbh = DBI -> connect ("DBI:mysql:$dbname:$dbhost",$dbusername,$dbpassword) or show_ErrorPage('データベースにアクセス出来ません。'); #$dbh->do("set names utf8"); #$data{'username'} = decode('utf8', $data{'username'}); #$data{'username'} = encode("shiftjis",decode("euc-jp",$data{'username'})); #$data{'username'} = encode("euc-jp",decode("utf8",$data{'username'})); #$data{'username'} = Encode::from_to($data{'username'}, 'utf8', 'euc-jp'); #utf8::decode($data{'username'}); #$data{'username'} = Encode::from_to($data{'username'},'euc-jp','utf-8'); $sth = $dbh->prepare( qq{ INSERT INTO $table2 (ID,user_login,user_pass,user_nicename) VALUES("$rows[0]", "$data{'username'}","$data{'password'}", "$data{'username'}") } ); $sth -> execute() or show_ErrorPage("データベースを実行出来ませんでした。$DBI::err ($DBI::errstr)"); $sth -> finish(); $sth2 = $dbh->prepare(qq{ SELECT ID FROM $table2 WHERE user_login = "$data{'username'}"}); $sth2 -> execute() or show_ErrorPage("データベースを実行出来ませんでした。$DBI::err ($DBI::errstr)"); @rowss = $sth2->fetchrow_array; $sth2 = $dbh->prepare( qq{ INSERT INTO $table3 (user_id,meta_key,meta_value) VALUES ("$rowss[0]","first_name",""), ("$rowss[0]","last_name",""), ("$rowss[0]","nickname","$data{'username'}"); $sth2 -> execute() or show_ErrorPage("データベースを実行出来ませんでした。$DBI::err ($DBI::errstr)"); ------------------------------------------------------------------------ 少し省いている部分もあり、数字等に間違いがあるかもしれません。 このPerlはフォームスクリプトで、$data{'username'}にユーザー名を入力してもらいます。 それを「user_login」や「user_nicename」に登録をしたいのですが、先のEUC-JPのDBでは問題ありませんが、UTF8のDBでは空白になります。 その後色々調べてみて、上記コードの#の部分を追加して試してみましたが、空白ではないものの文字化けになったり数字になって登録されてしまうようになりました。 やりたいことは、「$data{'username'}」という変数をUTF8に文字エンコードをしてWordpress側のDBに登録を行いたいのです。 その後「perl utf8 フラグ」などのキーワードを知り調べてみましたが、具体的に自分の知識では解決できずに悩んでおります。 もし宜しければご教示頂けますと幸いです。 宜しくお願い申し上げます。

  • 異なるDB(Oracl と MySQL)の結合は可能でしょうか?

    JavaというかDBに関しての質問です。 仕事で元々 Access で作られていたアプリをWebアプリで作り直す事になりました。 元々の Access バージョンでは、 外部の Oracl への「リンクテーブル」を設け mdb のテーブルと結合させて データを表示するというような事をしています。 この度作成するWebアプリ版(Java)では、 元々の mdb のデータを新たに建てる MySQL へインポートし 外部の Oracl と MySQL のテーブルを結合しデータを読込み画面へ表示するというような事を実現したいです。 そもそも異なるDBを結合する事は可能なのでしょうか? 同期の問題があるので出来ればどちらかのDBにもう一方のDBのデータをコピーするというような事は避けたいです。 なお私の方で既に試した方法としてそれぞれのDB(テーブル)をJDBCで別々に読込んでクエリの結果セットをモデル化したJavaのオブジェクトに格納し その後、結合の条件を指定しマッピングするという実装を試してみましたがマッピングに非常に時間がかかり使い物になりませんでした。 ※やはりSQLには遠く及ばなそうです。 MySQL で Access のリンクテーブルのような便利機能はあるのでしょうか? Oracl はお客様が管理されており手を加えることが出来ません。 またデータベース側で出来ないとなればアプリ(Java)側で何とかしないとなりませんが Java で良い解決策はありますでしょうか? まとまりの無い質問となってしまいましたがどうぞ宜しくお願いします。

    • ベストアンサー
    • Java
  • PHPでMysqlにCSVをインポートす文字化け

    お世話になります。 文字化けが解消できずに困っています。 PHPからローカルXAMPPのMYSQLにCSVでデータを上げたいのですが、日本語が文字化けして表示されます。秀丸テキストエディタで可能な限りのエンコードを試しましたが解決できず、サーバ側のエンコード設定も確認しましたがutf8_unicode_ciです。 Mysqlの管理画面のsqlから実行しても同様の結果です。 もう、色々やり過ぎてPHPが悪いのかMysqlサーバの設定なのかCSVの問題なのかわからず途方に暮れています。 諸先輩方でお分かりになられる方がいらっしゃいましたら是非、お知恵を貸してもらえませんか。 PHPのソースです。 ------------------------------ $host = "localhost"; $mysql_user = "root"; $mysql_password = "password"; $db = "utsun_db"; $cn = mysql_connect($host,$mysql_user,$mysql_password); if(!$cn){ die("db connect Error"); } if(!(mysql_select_db("$db"))){ die("db select error"); } $file = '"c:/tablea.csv"'; $sql = "LOAD DATA LOCAL INFILE $file INTO TABLE tablea FIELDS TERMINATED BY ',';"; $query = mysql_query($sql); mysql_close($cn); ----------------------------- CSVの中身 N551 佐々木 37 N552 伊藤 41 N553 斉藤 31 N554 井上 43 N555 阿倍 31 ----------------------------- Mysqlの方ではこのように表示されています N552 伊藤 41 N553 斉藤 31 N554 井上 43 N555 阿倍 31 ほんとうに困っております宜しくお願いします。 環境 Apache/2.4.3 (Win32) OpenSSL/1.0.1c PHP/5.4.7 phpMyAdmin バージョン情報: 3.5.2.2, 最終安定バージョン: 4.0.4.1

    • ベストアンサー
    • MySQL
  • MySQL レコード追加と文字コードの変換

    MySQLで、照合順序がutf8_general_ciの"db"というデータベースに "hiragana"というテーブルを作っています。 (MySQLバージョン:5.5.27、 PHP拡張機能 MySQLi) 追加できたりするのですが、日本語が文字化けしたり、コードが古いなどで うまくいきません。 レコードを追加するコードのサンプルを教えていただけませんでしょうか? 使っている関数が古い書籍のサンプルのため 「この拡張モジュールは PHP 5.5.0 で非推奨になりました。将来のバージョンで削除される予定です。」 という関数ばかりで手詰まりな状態です。 //------ 入力するデータ  ------ $hiragana['a'] = 'あいうえお'; $hiragana['k'] = 'かきくけこ'; $hiragana['s'] = 'さしすせそ'; $hiragana['t'] = 'たちつてと'; $hiragana['n'] = 'なにぬねの'; //------ DBの情報  ------ $server = "localhost"; $dbname = "db"; $user = "root"; $password = "************"; //------ INSERT INTO  ------ $sql = "INSERT INTO hiragana( a, k, s, t, n ) VALUES( '".$hiragana['a']."', '".$hiragana['k']."', '".$hiragana['s']."', '".$hiragana['t']."', '".$hiragana['n']."');";

    • 締切済み
    • PHP
  • DBに格納された画像データを縮小して表示したい

    PHP5+MySQL5です。 DB内のBLOBカラムに、Base64エンコードされた画像データが格納されています。 これを、サムネイル用に縮小して表示したいのですが、widthとheightで見た目だけを小さくするのではなく、ファイルサイズも小さくしてブラウザに渡したいと考えています。 (小さくした画像は保存しません) そこで、DBから取得した画像データを「imagecopyresampled」で再サンプリングしつつ小さくしたいと思いましたが、画面には何も表示されませんでした。 以下、ソースを簡潔に記載します。 $db_img = "DBから画像データを取得"; //600x600の画像 //Base64デコード $old_img = base64_decode($db_img); //200x200のサムネイル画像を作成 $new_img = imagecreatetruecolor(200,200); //再サンプリング・縮小(600x600→200x200) $thumbnail = imagecopyresampled($new_img, $old_img, 0, 0, 0, 0, 200, 200, 600, 600); //画面出力 print $thumbnail; この場合、どのように処理すればいいのか教えていただけないでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
このQ&Aのポイント
  • 夫のモラハラ行為に悩んでいる私。離婚を考えて別居することにしたものの、心の揺れが止まりません。
  • 夫のモラハラ行為には、友人との食事の制限や好みの顔を持つ元嫁への言動などがあります。
  • さらに、忘れやすい主人の対応や、負担を軽減するための話し合いでも反対されたり、精神的な攻撃を受けるなどの問題もあります。
回答を見る

専門家に質問してみよう