0

リンクから取得したパラメーターを使用してデータベースに書き込みを行っています。

次のリンクを検討してください。

mywebsite.com/index.php?ud=33&nt=117&g=Yes

リンクをいじって値を変更すると、データベースに間違ったデータが書き込まれます。これを防ぐために利用できる方法は何ですか?

リンクは電子メールメッセージからクリックする必要があることに注意してください

私が考えているのは、メッセージごとに 1 回だけ機能する 1 回限りの認証キーですが、データベースに多くのスペースが必要です。より良い方法はありますか?

4

1 に答える 1

1

機密データはクエリ文字列に含めないでください。

次の手順を実行します:

1 - データベースへのリンクを書き込む前に、ビジネス ルールの一部として、パラメーターが一貫しており、ユーザーにアクセス許可があるかどうかを確認する必要があります。

2 - 次に、クエリ文字列のどのパラメータをプレーン テキストにするかを考える必要があります (つまり、データベースに格納されたリンク内)。たとえば、エンティティの ID をクエリ文字列に保持してデータベースに送信する場合、言及されたエンティティが削除された場合に問題が発生するかどうかを考慮する必要があります。クエリ文字列はプレーン テキストであるため、カスケードは実行されません。この場合、最善の方法は、クエリ文字列をデータに変換し、クエリ文字列ではなく外部キーとしてデータベースに格納することです。次に、アプリケーション レベルでリンクを構築することにより、完全なリンクを回復できます。


別のヒント:

リンクを電子メールで送信してud=33&nt=117&g=Yesいるため、暗号化アルゴリズムを実行してこれらすべてを 1 つの暗号化された文字列に変換することにより、文字列をプレーン テキスト (シナリオでは ) に変換できます。のようなものがありmywebsite.com/index.php?c=IJNWEI7we876fWEPOWOKEMFます。ユーザーフレンドリーではなく、プレイプルーフではありません。

それが役に立てば幸い。

于 2013-07-22T03:40:12.080 に答える