2012-04-12 11 views
2

私は、私たちの契約部門からサプライヤーに送られるオンラインフォームを持っています。このフォームにより、サプライヤーは自社の情報と製品価格を更新することができます。ログインを必要としないオンラインフォームのセキュリティを改善するにはどうすればよいですか?

私たちはすべてのサプライヤーのアカウントを作成したくないので、ログインを強制的に使用する必要はありません。これは1年に1回行うものなので、資格情報。

このオンラインフォームには、現在の「ブローカー」価格が表示されるため、機密情報が表示されます。

メールで送信される一意のURLを作成しようと考えていました。しかし、私は

  • のみ意図された受信者は誰かが推測して、フォームの束を開くことができるようになるURLの偽造のリスクを軽減し、フォーム

  • を読んで、更新することができることを確認する必要があります他のユニークなURL

このURLは電子メールで送信され、サプライヤはフォームをクリックして編集することを期待しています。電子メールには、更新された情報を投稿する際に使用する必要のある数字のパスワードを含めることになりました。各URLには有効期限があります。

このような一意のURLを生成するためのベストプラクティスと、上記のリスクを防ぐためにセキュリティを強化するために使用できる手順は何ですか?

+0

これは、Security.StackExchange.comとここでも良い回答が得られるかもしれません。私はこのサイトの良いアイデアをいくつか持っていると思っていますが、そこには、考えられない別のアプローチがあります。私は個人的には開発者として、すべてのプログラムへの答えは「それを扱うプログラムを書く」ことを私は知っています。それは私が思いつくアイデアを制限するので、いくつかの代替的な考え方が良いアイデアかもしれません。 – David

答えて

2

各顧客のランダムな文字列をGJAOEJGOMASDIG2351DSFGSDのように生成し、URLのどこかに入力します。彼らがURLにアクセスするとき、ランダムな文字列が会社のランダムな文字列と一致することを確認してください...?

http://www.domain.com/form.php?customerId=255&rand=GJAOEJGOMASDIG2351DSFGSD

$sql = "Select * from customers where id=".$custId." and randomHash='".$randString."'"; 

この方法で、視聴者は、顧客のIDとそのマッチングランダムな文字列を知っている必要があります。どちらかが一致しない場合は、アクセスを拒否します。

SQLインジェクションに対する予防措置を講じてください。

+0

興味深い、一意の文字列と一致するID –

+1

これは良いです!私はこれに、ランダムURLを1回限りの使用アイテムにするために、時間制限付きで追加します。 – David

+0

はい...このチェックを行うと、未来を防ぐために顧客のランダムな文字列をNULLに設定することができます(一度確認されます)。必要に応じて検索します。このランダムな文字列は、その文字列に関するあらゆる種類のデータを含む別のテーブルに格納することもできます。有効期限、最大使用回数など – Dutchie432

1

最も明白な答えは次のとおりです。

は、URLに乱数、多数(番号が割り当てられているDBに格納し、電子メールへの)でパラメータを追加します

ユーザーURLをクリックすると、フォームに正しいメールを入れる必要があります。

関連する問題