問題タブ [auditing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - mysql (ほぼ) 完全な監査
テーブルの簡単なイベント ログを作成する方法を探しています。さまざまなユーザーが変更できるテーブルがほとんどないので、追跡したいと思います。
次のようなものは素晴らしいでしょう:
したがって、トリガーが答えになる可能性があると読みましたが、読んだ限りでは、追跡したい列ごとに完全な新しいテーブルが必要なようです。誰が変更を行ったかをログに記録したいので、トリガーはこの仕事には最適ではありません。私が読んだことから、これは不可能です。
CRUD(挿入、更新、削除)の3つの異なる機能を作成し、クエリを作成する直前に、何が変更されたかを確認し、ログを作成してクエリを実行することを考えました。しかし、ここからは非常に遅く複雑なようです。
別のより良い方法はありますか?
ありがとう
トリガーをもう一度確認しましたが、探していたものではないので、ログに記録するクエリごとに新しい値が異なるかどうかをチェックする簡単な関数を作成し、そうであればログに記録します。
主な問題は、測定していませんが、明らかに遅いことです。
最初に、次のように新しい mysql テーブルを作成する必要があります。
- id (a_i、プライマリ)
- creation_date (日時)
- ユーザー ID (整数)
- テーブル名 (小さなテキスト)
- record_id (整数)
- cell_name (小さなテキスト)
- action_type (小さなテキスト)
- old_value (テキスト)
- new_value (テキスト)
その後、関数を書きます。「INSERT」セクションと「DELETE」セクションはまだ書いていませんが、もっと簡単にできるはずです。
と :
関数を呼び出すには、最初にパラメーターを並べ替えて特定の行を見つけ、新しい値を配列に入れ、その後 log_query 関数を呼び出します。
これにより、「名前」が変更されたかどうか、および説明が変更されたかどうかが実際にチェックされます。それぞれについて、変更された場合、正確な変更を指定して新しいレコードを「監査」テーブルに挿入します。変更をログに記録した後、更新クエリを実行します。この例では:
これが役に立てば幸いです。今のところテスト済みで動作します。更新がある場合は、ここに投稿します。
c# - 前後の値の監査レコードの書き込み
現在、ASP.NET/C# で SqlDataSource を使用して、ユーザーがテーブル/グリッドビューのエントリを挿入、削除、更新できるようにしています。すべてのイベントを監査テーブルに書き込む必要があります。
挿入と削除を簡単に実装しました-挿入時に監査される主な情報は、挿入クエリのパラメーター値(e.Command.Parameters [0].Value.ToString()など)であり、削除はほとんど同じです(削除クエリで ID を取得するだけです)。
しかし、更新では、変更されたフィールドとその古い値をログに記録する必要があります。どうすればいいですか?例として、挿入のコードを次に示します。
}
これはどのように行うことができますか?
c# - 更新または挿入時に gridview の PK を返す (ASP.NET、C#)
テーブルへの挿入、更新、削除などのすべての変更を監査する必要があり、自動的に生成された INSERT/UPDATE/DELETE ステートメントで単純な SQLDataSource と GridView を使用しています。問題は、行が更新されたときに ID (主キー) を取得し、それを監査テーブルに入れたいということですが、UPDATE クエリの唯一のパラメーターは実際のデータであり、主キーではないため、わかりません。この情報にアクセスする方法。これが私のUPDATEクエリです:
そして、監査のためのコードビハインドは次のとおりです。
hibernate - DoctrineのHibernateEnvers?
Doctrine 1.xと2はどちらも、時間の経過に伴う変更を追跡する個別の監査テーブルの形式で、ある種のバージョン管理可能なサポートを提供します。ただし、バージョンは、すべての行に一意のリビジョン番号を与えるHibernate Enversのように、データベース全体ではなく、行ごとの使用を目的としているように見えます(つまり、すべて独自のバージョン番号を維持します)。
Doctrineは実際にその種の行動をサポートしていますか?私はそれがそうすることを示唆するものをオンラインで見つけることができませんでした。
python - 悪用可能な Python 関数
この質問はExploitable PHP Functionsに似ています。
汚染されたデータは、ユーザー、またはより具体的には攻撃者から取得されます。汚染された変数がシンク関数に到達すると、脆弱性が発生します。たとえば、SQL クエリを実行する関数はシンクであり、GET/POST 変数は汚染のソースです。
Python のすべてのシンク関数は何ですか? 脆弱性またはソフトウェアの弱点をもたらす機能を探しています。リモートでコードが実行される脆弱性に特に関心があります。危険な機能を含むクラス/モジュール全体はありますか? 興味深い Python の脆弱性の例はありますか?
oracle - 「セッションごとにセッションを作成する監査」と「アクセスごとにセッションを作成する監査」?
次の方法で作成セッションの監査を有効にした場合:
次に、次のクエリを実行します。
結果は次のとおりです。
ただし、次の方法で作成セッションの監査を有効にすると、次のようになります。
次に、次のクエリを実行します。
結果は同じです:
なんで?何か考えはありますか?
c# - C# のリフレクションと監査の種類
コードがスレッド (System.Threading.Thread) を作成するかどうか、または他の BCL を使用するかどうかを確認するなど、検証要件を適用するために一部のコードを「監査」することがリフレクション (またはその他の方法) によって可能かどうかを把握しようとしています。コードが既に dll にコンパイルされていることを前提としています。ありがとう!
jakarta-ee - Java EE プロジェクトで監査すべきものと監査すべきでないもの
プロジェクトの監査に関してアドバイスが必要です。
現在、私が開発しているプロジェクトには、「ユーザー」が実行できる多くのアクションがあります。
- 自分のパスワードを変更する
- 権限の追加、削除
- ロールの追加、削除
- ファイルのアップロード
- 他にもたくさん..
ユーザーに到達可能なこれらすべてのアクションは監査されますが、たとえば次の監査が通常かどうかはわかりません。
パスワード ポリシーでは、ユーザー パスワードには少なくとも 1 つの記号と 1 つの数字を含める必要があると規定されています。特定のユーザーがある時点で、ポリシーを気にせずにパスワードを変更しようとすると、もちろん、パスワード ポリシーが尊重されていないというメッセージが表示されますが、これを監査する必要がありますか? 以前に監査したことのある人、またはその問題について知っている人からの意見が欲しいだけです。
別の考えられるケースは、ユーザーが存在しないものを削除しようとした場合です。たとえば、アクセス許可の空のリストがあり、存在しないものを削除しようとした場合、ユーザーはもう一度選択するようにというメッセージを受け取ります。少なくとも 1 つの削除権限が必要ですが、このアクションは監査する必要がありますか?
どんなフィードバックでも大歓迎です。プロジェクトを監査するのは初めてです。ありがとう :)
sql-server - SQL Server 監査ログ ファイルの「Statement」属性
SQLサーバー監査ログファイルのステートメント属性のパラメーターの値を読み取る方法を教えてください。例:id = 'someID'のsome_tableから名前を選択するクエリを起動しました
ログファイルでは、ステートメント属性のエントリを Select from [some_table] where [id]=@1 として取得します
では、誰かがこの @1 の値を取得するのを手伝ってくれませんか???
c# - .NETはタイプをサブタイプに変換します
私たちはプロジェクトでNHibernateを使用しており、いくつかの監査を行うためにpre update / insert/deleteイベントにフックしています。
ソーステーブルと同じスキーマを持つ独自の監査テーブルに対して各エンティティを監査する必要があります(「更新」、「挿入」などの監査操作を使用する場合があります)。
トリガーを自動的に生成するunHAddinsを見てきましたが、受け入れることができないメインテーブルに変更を加えると、監査テーブルが削除されて再作成されるようです。また、監査のみを行うようにカスタムロジックを用意する必要があります。実際のプロパティの特定の状況下で記録します(関心のあるプロパティは、すべてのオブジェクトの基本クラスの一部です)。
これを簡単に行うために、既存のドメインクラスを拡張して、それらの拡張クラスの新しいNhibernateマッピングを定義できると考えました。
例えば:
クラス楽器があります
Iauditableオブジェクトの監査クラスがどのクラスであるかを確認できるように、インターフェイスIauditableを定義しました。
監査クラスは以下のとおりです。
追加機能はありません。基本的には、NHibernateの監査テーブルにマップできるようにするためのハックです。
したがって、これは機能するように見えますが、NHibernateイベントを処理しようとすると実際に問題が発生します
e.Entityはオブジェクトとして私に与えられます。
上記は私が働きたいコードです、基本的に私はオブジェクトが監査されるべきものであり、それが私のベースオブジェクトの1つであることを知っているので、それを監査オブジェクトのサブタイプに変換してnhibernateに渡したいと思います保存する。
残念ながら、実際の型である必要がある変数にキャストできるようには見えません。とにかくこれを回避できるので、監査ごとにコンストラクター/コンバーターを配置しなくても、オブジェクトを「監査」型にキャストまたは変換できます。基本型を取り、プロパティを保存する型?