2010-11-26 19 views
1

セキュリティの観点からgetメソッドでデータベース値を表示するのは悪いことですか? 例: - 'http://example.com/user/id/10'ここで10はデータベースからの値をとります。phpのエンコードとデコードのアルゴリズム

誰も私に標準のエンコーディングとデコードのアルゴリズムを提案することができます(エンコーディングとデコードの両方のための2つのパラメータ)ので、PHPファイル(またはデータベース)の変数として格納することができ、符号化または復号化される。

、私はあなたの質問の最初の部分を答えるでしょう事前

+0

などはセキュリティ上のリスクがありません。ユーザーは「10」で何をすることができますか?これがセキュリティホールを開くかどうかは、アプリケーションの残りの部分によって異なります。存在しないかもしれないセキュリティ問題を解決するために、URLの値をエンコードすることは、通常、間違ったアプローチです。 – deceze

答えて

0

にありがとう:

ですビューのセキュリティ ポイントのgetメソッドでデータベース 値を表示するには悪い習慣ですか?たとえば、次のようになります。 - 'http://example.com/user/id/10'ここで 10はデータベースから値をとります。

実際には、ページがid/10で何をしているかによって異なります。単にユーザー情報(プロファイル)を表示している場合は、何が害ですか?しかし、すべてあなた次第であなたのURLをマスクしたい場合。私は暗号化を使用してマスキングを見たことがありますが、私はなぜあなたがそのURLが「有害」と思われるのか不思議です。ユーザーにid = 10を見せたくないだけですか?私は無防備なものを(私の視点から)暗号化するためのオーバーヘッドを追加するのではなく、そのページのPHP/SQLクエリを安全にすることに焦点を合わせます。

EDIT:http://us.php.net/manual/en/function.base64-encode.php

十分なあなたを与える必要があります。

が単純化のために、あなたは、PHPの関数base64_encodeとデコードを利用することができます。しかし、私は本当にあなたが最初にそれを隠そうとしている理由を考えるだろう、一般的に '読みやすい' URLは、特にそれが検索エンジンの最適化になると、常にボーナスです。

+1

base64はそれを見たことのある人にとっては明らかです。私の考えでは、URLを長くするだけです。そうでなければ同意する。 –

+0

ご返信ありがとうございます。私はcakePHPのようなフレームワークがなぜ暗号化のために「塩」値を取るのか不思議に思っていました。それはすべてのユーザーのid(データベースの主キー)を表示しているのは馬鹿に見えませんか?私はちょうどアルゴリズムをマスクする必要があった。 bur base64エンコードには1つのパラメータしかかかりませんか?あなたは私に1つを提案できますか? –

+1

@explorex、http://en.wikipedia.org/wiki/Salt_(cryptography)は、あなたがエンコードしている '文字列'に '追加'されています。これはかなり単純に 'mystring' + 'secretsalt'のようなものです。暗号化を少しだけ行います。あなたがIDを表示すると私はそれが愚かだとは思わない、私は、ID、プロファイルのユーザーID、そのすべてが、暗号化されたばかばかしいよりむしろ人間が読むことができることを意味します。 URLではなくアプリケーションのセキュリティに注目してください。 – Jakub

0

唯一のリスクは、サイトのアクセス許可のセキュリティ設定が正しくない場合です。あなたのデータをデータベースIDで照合しても問題ありません。理解するのは簡単です。誰かがすべてのデータをクロールしたい場合は、URLをインクリメントするだけです。

特定の「ids」にアクセスできないようにするには、そのページを表示するための適切なログイン資格情報があることを確認してください。

今、あなたはMD5ハッシュを使用してに見て、暗号化/復号化を容易にする場合:http://php.net/manual/en/function.md5.php

+1

私が間違っている場合は私を修正してください、しかし、md5は '解読'機能を持たないので、彼はどのように彼の 'id'を得るでしょうか? – Jakub

+0

@waijwはmd5で復号化することができます –

+0

鍵はパスワードのようにデータベースに暗号化して保存する必要があります。なぜなら、最初に暗号化する必要があるのは本当にわからないが、私が考えていた実装では、ユーザーはハッシュではなくIDを見るだろう。 – wajiw

関連する問題