SQLクエリがデータベースのデータを変更しないようにするための最良の方法は何でしょうか。
私のシナリオでは、データベースレイヤーにアクセスできず、アプリケーションレイヤーでのみこのロジックを実行できます。
宝石、ルビーカスタムスクリプトの使用をお勧めしますか?
SQLクエリがデータベースのデータを変更しないようにするための最良の方法は何でしょうか。
私のシナリオでは、データベースレイヤーにアクセスできず、アプリケーションレイヤーでのみこのロジックを実行できます。
宝石、ルビーカスタムスクリプトの使用をお勧めしますか?
ユーザーの権限を管理して、データベースを読み取るためのアクセス権はあるが、データベースを変更するためのアクセス権を持たないようにすることができます (つまり、挿入、更新、および削除はできません)。たとえば、mysql を使用している場合、これは phpmyadmin または同等のツールで簡単に実行できます。
変更に基づいて更新します。アプリケーションを介してのみアクセスできる場合でも、更新、削除、挿入、または選択する権限を持っている、または持っていないユーザーとしてデータベースに接続しているため、そのようなクエリが実行されないようにする唯一の方法は変更することですそのユーザーの権限。
単純ですが絶対確実な方法とは言えませんが、挿入、更新など、クエリに含めることができない単語のブラックリストを使用することです。または、SQLクエリでパーサーを使用して、派生するために必要な情報を提供することもできます。クエリを許可するかどうか。オプション1は、最後の手段として、またはチェックのニーズが比較的単純な場合にのみ使用します。
データベース層では、Rails アプリがデータベースにアクセスしているユーザーが、必要なアクセス権 (おそらく SELECT のみ) のみを持っていることを確認してください。
Sequelは、書き込み可能なマスター データベースを備えた読み取り専用のスレーブ データベースをサポートしています。読み取り専用スレーブがSELECT
クエリを処理し、他のクエリはマスター データベースによって実行されます。
たぶん、マスターデータベースをnilとしてセットアップできますか?
別のアプローチとして、フック( before_save
) を使用してデータベースへの書き込みを防ぐことができます。