パラメータをランダム文字列で表わす方法について

このQ&Aのポイント
  • 某サイトでリンクをクリックすると、ランダム文字列がパラメータとして渡されることがあります。
  • このランダム文字列をPHPで簡単に生成する方法について調べています。
  • 暗号化を使用して文字列を生成することでセキュリティを向上させることができます。
回答を見る
  • ベストアンサー

パラメータをランダム文字列で表わしたい

某サイトでリンクをクリックすると、下記のようにランダム文字列がパラメータとして渡されるものがあります。 http://www.foobar.jp/cgi-bin/abcd.cgi?a=10004414&b=PMird395j ランダム関数で生成?もしくは暗号化?しているのではないかと思うのですが、例えば商品番号などをそのままの数値でなく暗号化することができれば、セキュリティの向上にもつながるのではないかと思います。 このような文字列をPHPで簡単に生成する方法には、どのようなものがあるでしょうか。もちろん、文字列から元のIDや番号を復元できなければなりません。暗号化を使うのが良いのでしょうか。

  • haru44
  • お礼率68% (153/223)
  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • slash_t
  • ベストアンサー率60% (6/10)
回答No.2

すいません、補足します。 暗号化というか、ランダムに見える文字列の生成には使えると思います。 暗号化は、簡単に済ますならbase64_encodeした後リバースするとか、、、 mcryptライブラリなどを使うとかです。

haru44
質問者

お礼

回答ありがとうございます。 なるほど、base64_encode は手軽に使えて良いですね。 グッドアイデアだと思います。 mcrypt は configure で --with-mcrypt をつけていなければならないみたいなので、後で試してみます。

その他の回答 (1)

  • slash_t
  • ベストアンサー率60% (6/10)
回答No.1

ランダム、という件についてはちょっとわかりかねますが、暗号化ならbase64_encodeを使えばいいと思います。

参考URL:
http://php.s3.to/man/function.base64-encode.html

関連するQ&A

  • ランダム文字列の生成の仕方

    こんばんは。 はじめまして。 JAVAでランダムの文字列を生成する時に何か便利な機能はあるのでしょうか? CGIでは確かあったはずなんですが、 自分なりに探してみたのですがわかりませんでした。 今の自分の考えでは、ランダムで数字は生成できるので それをChar型を使って文字コードで一文字取得して、それを連結するのかな? なんて考えています。 もっといい方法があればできればご教授ください。 よろしくお願いします。

  • アルファベットを含むランダムな文字列を生成するには?

    通常の数字を用いた乱数を発生させるには OrderNo + Int(17 * Second(Time) * Rnd) :OrderNoはDB上にある注文番号の最終レコード値です という感じで、とりあえず適当にランダムな値を自動で生成させることができるのですが、 アルファベットなどの文字を含む場合のランダムな文字列の生成はどのようにすればよいのでしょうか? 感じできには、 UkB1PgMJ zK22fw2W N1np8zDb DbetjqKq Cj58pfYm というものです。 例は、小文字の[i][l][o]と大文字の[I][L][O]と数字の[0]を含まないランダムな文字列を8桁で生成しています。 (使用したソフトは、Fapsis氏のPassword Creator TypeB Ver3.5です) 具体的には何か関数で、このような文字列をランダムに発生させるものがあるのでしょうか?

  • ランダム文字列

    srand; @array = a .. z; @new; while ( @array ) { push( @new, splice(@array , rand @array , 1) ); } print @new, "\n\n"; print "<br>"; print @new, "\n\n"; print "<br>"; print @new, "\n\n"; ↑のような感じでランダム文字列の作成を考えています。 上記スクリプトですと、 aewpodigtusnkjycfxvmzqrlhb aewpodigtusnkjycfxvmzqrlhb aewpodigtusnkjycfxvmzqrlhb ↑のようにどの行も同一文字列になってしまいます。これを、行毎に異なった8文字のランダム文字列にしたいのですが、方法がわかりません。 いっぺんに100行のランダム文字列を生成する必要があります。どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • ランダム文字列をDBにINSERT

    はじめまして。お世話になります。 LAMPでWEBシステムを作成しております。 ランダムな文字列をDBにINSERTする処理に関して質問させて頂きます。 条件: ・DBに入るランダムな文字列は重複不可。 ・ランダムな文字列は[a-zA-Z0-9]の10桁とする。 ・1度の処理で、ランダムの文字列は確実にINSERTさせる。 ・同時に多数の処理が走ることがある。 ・処理は速いに越したことない(DBの負荷も低めがよい) 環境: PHP 4.4.4 Mysql 5.0.33 使用ストレージエンジン:MyIsam 私が思いついたのが以下の2通りです。 (1) ランダム文字列が入るカラムをユニークキーとし、PHP側で作成されたランダム文字列をINSERT。 重複していたらエラーが返ってくるが、正常にINSERTされるまでPHP側でループ。 (2) 対象テーブルをロックし、PHP側で作成されたランダムの文字列をSELECT。 なければその文字列をINSERTし、テーブルロック解除 (1)はループが少し怖く、(2)はDBへの負荷がかかってしまいそうですが どちらがよいでしょうか? もしくは、他に何か方法があればご教授頂けるとありがたいです。 また、現在MyIsamを使用しておりますが、場合によってはストレージエンジンの変更も 考えておりますのでその点も考慮して頂けると幸いです。 ちなみに検索条件は、ランダムの文字列をキーに全てのデータを取得するくらいです。 そのテーブルは、カラム数15、レコード数1,000万の見込みです。 以上、長くなりましたがよろしくお願いします。

    • ベストアンサー
    • PHP
  • 毎回異なるランダムな文字を生成するには

    PHPでだた毎回異なるランダムな文字を生成するにはどうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHP パラメータの暗号 復号

    PHPのパラメータを暗号化して 取得側で復号処理も行いたいのですが・・・。 いろいろなサイトをみて試していますが、暗号化された文字列に、 おそらく+(プラス)が入ると復号がうまく行きませんでした。 みなさんはどのようにされていますでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • ランダム(不規則)な文字列の置換えについて

    初めて投稿させていただきます。 文字列置換について、色々と調べたのですが全く解決しなかったのでこの場を借りてご質問させて頂きます。 早速ですが記述から記載させて頂きます。 $str = file_get_contents('http://example.com/'); $replaced = str_replace("index.php?ref=123abc", "index.php?ref=456def", $str); echo $replaced; このように一定の文字列に対しては置換ができたのですが、 index.php?ref=123abc の箇所が index.php?ref=123abc&PHPSESSID=qazwsxedcrfvtgbyhnujmikolpqazwsx のようにPHPSESSIDのセッションID(毎回変わるランダムな32桁の文字列)が付いてきた場合に index.php?ref=456def に置換える方法がわかりません。 &PHPSESSIDの文字列の先頭部分から右に43文字目※(&PHPSESSID=の所で11文字)+(IDの所で32文字)※までを index.php?ref=456def に置き換える方法や 初めからPHPSESSIDのセッションIDの部分を表示させない方法など ここ数週間色々考えてみましたがどうしてもわかりませんでした。 PHP初心者ですので、なるべくわかりやすく教えて頂けると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ランダムな文字列を生成しその文字列をメール送信したいのですが・・・

    ランダムな文字列を生成し、その文字列をURLに組み込み、 そのURL自体をメール送信したいのですが、どうもうまく行きません。 恐らく初歩的な間違いをしているのだとは思いますが、 PHP 初心者ですのでどこがどう間違っているのか全くわかりません。 今やろうとしている事は ( 下記プログラム参照↓ ) 生成したランダムな文字列を $randam に代入し、 $randam を URL の中に取り込んで、これを $url に代入。 さらにこの $url をメール本文としてメール送信したいのですが うまく行きません。 どなたかアドバイス頂けませんでしょうか? 宜しくお願い致します。 今、作成している内容は以下の通りです。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ## ランダムURLを生成 開始 ↓ -------------------------------------------- # * マイクロ秒により乱数器に種まき */ function make_seed() { list($usec, $sec) = explode(' ', microtime()); mt_srand((float) $sec + ((float) $usec * 100000)); } /** * パスワードを生成する * @param int $len パスワードの長さ * @param string $str パスワードに使う文字の並び * @return string パスワード */ function make_password($len, $str) { $l = strlen($str) - 1; $psw = ""; for ($i = 0; $i < $len; $i++) { $n = (int)mt_rand(0, $l); $psw = $psw . substr($str, $n, 1); //1文字追加 } return $psw; } $randam = make_password(10, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"); $url = "http://●●●●●.com/$randam.html"; ## ランダムにURLを生成 終了 ↑ ------------------------------------ # ## 設定項目 開始 ↓ -------------------------------------------- # $mTo = $_POST[mail]; $user_id = $_POST[usr]; $password = $_POST[pass]; ## メールの件名 $mSub = 'Test Program'; ## メール本文 $mMes = '↓お申し込みの内容は以下の通りです。 '.$mTo.' '.$user_id.' '.$password.' '.$url.' ## 送信元アドレス $mFrom = 'mail@●●●●●.com'; ## 設定項目 終了 ↑ -------------------------------------------- # if (empty($mTo)) : ?> <?php else : $mFrom = "From: ".$mFrom."\nX-Mailer: PHP"; mail ($mTo, $mSub, $mMes, $mFrom); ?>

    • 締切済み
    • PHP
  • ランダムに文字を表示したい

    ランダムにテキストやリンクを表示するプログラムを書きたいのですが、何かいいサイトかいい方法はないでしょうか? ランダムに表示する文字列は違うTXTファイルなどに保存して別で管理する方法にしたいのですが。 CGI初心者なのですがよろしくおねがいします。

    • ベストアンサー
    • CGI
  • ランダムな文字列の含まれた画像を表示させたい

    ウェブサイトのユーザ登録のさいに、ロボットによる大量自動登録をさけるために、 ランダムな文字列の含まれた画像を表示させ、その文字列を入力することにより、 人間による登録だと判断させる方法がありますが、 あれは、どうやって実現しているのでしょうか? なお、環境はCentOS4、Apache2.0.52、MySQL4.1.20、PHP4.3.9です。 PHPにGD組み込んでます。(使ったことはないのですが・・・) なお、画像はgifを希望しています。 また、できれば、 ●文字列を音声で発音してくれる機能 ●l(エル)と1(イチ)、5とS(エス)などまぎらわしい文字は排除したい の2点を実現できればと思っています。 以上、よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう