質問テーブルがあります。このテーブルの主キーは自動インクリメントの「id」です。今、私は質問を管理するためのコントロールパネルを作成しています。コントロールパネルの機能の1つは、質問の削除です。今私の質問:ユーザーが質問を削除するためにHTMLタグをクリックしたときに、質問の主キーが質問を削除するためにサーバーに送信されるように、HTMLタグの識別子としてQuestionsテーブルの主キーをクライアントに送信したいと思います。セキュリティの面で危険ですか?より良い解決策はありますか?
3 に答える
ID 付きの HTTP GET、POST、または Web サービス呼び出しの形式で送信されるかどうかに関係なく、すべての要求を検証する必要があります。
適切に作成された Web サイトには、IP アドレスの追跡とリクエスト頻度の分析に依存するボットに対する保護が必要です。ID を非表示にすると、一連のオブジェクトを取得するためのシェル スクリプトを作成できなくなる場合がありますが、何らかのブルート フォース攻撃を使用して Web サイトを悪用する方法は他にもあります。
ICQ ID は価値がありますが、それは、ID がユーザーに関連しており、ユーザーの主要な識別手段であるためです。これは、ユーザー認証に対する独自のアプローチであり、他のサービス、プログラム、または Web サイトでは使用されていません。
結論 はい、スクレイパーや DDOS 攻撃、データ保護など、さまざまなことを心配する必要がありますが、ID を非表示にしても、これらの問題は適切に解決されません。
あなたの質問が、主キーと他の一意の列のセットを使用して削除するレコードを識別することに関連している場合、データベース レベルでのセキュリティに違いはありません。
たとえば、次の列を持つテーブルがあるとします。
id - primary key
subject -
serial_number -
...
other fields
subject + serial_number
行ごとにどこで一意にするか、どこで行うかによってセキュリティ上の違いはありません。
delete from table where id = '&id'
対
delete from table where serial_number = '&1' and subject = '&2'
主キーを使用した削除は、より高速である可能性があります。
ただし、この削除は HTML ページからトリガーされているため、ページを保護し、誤って削除されないようにする方法を確認する必要がありますが、レコードを削除するために主キーを使用するか他のフィールドを使用するかの決定には関係ありません。 .
使うらしい
<a href="YOUR_URL_TO_DELETE/ID_TO_DELETE">YOUR_ANCHOR</a>
このアプローチで私が遭遇する主な問題は、リンクをたどることができるすべてのスクリプトがテーブル内のレコードを削除できることです。POST メソッドでフォームを使用することを検討し、リクエストを実行する前にユーザーに確認ダイアログを表示します。