問題タブ [data-integrity]
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.
python - Python: データの改ざんを防ぐ手段としての暗号化
私の会社のクライアントの多くは、研究ベースでデータ取得ソフトウェアを使用しています。一般的な調査の性質上、改ざんを防ぐためにデータを暗号化するよう依頼するクライアントもいます。データが改ざんされていることが判明した場合、深刻な問題が生じる可能性があります。
一部のバイナリソフトウェアは、ソースに保存されているランダムな文字のようなパスワードで出力ファイルを暗号化します。ソフトウェア レベルでは、暗号化されたファイルを読み取り専用操作で開くことができます。誰かがデータを変更できるようにパスワードを本当に知りたい場合、それは可能ですが、大変な作業になります。
別のソフトウェアを迅速に開発するために Python を使用することを検討しています。暗号化の機能を複製してデータの改ざんを無効/抑止するために、これまでに思いついた最良のアイデアはctypes
、ファイルの読み取り/書き込み操作に DLL を使用するだけで、暗号化と復号化の方法が「十分に」難読化。
「クラック不可能な」方法が実現不可能であることは十分承知していますが、同時に、暗号化/復号化のアプローチが Python のソース コードにプレーン テキストで記述されていることに満足していないことは明らかです。「データ改ざんの非常に強力な阻止」で十分だと思います。
Python を使用して、暗号化やその他のデータ整合性の証明の満足のいく媒体を達成するための最良のアプローチは何でしょうか? 「改ざん防止署名」の生成について話している別の投稿 を見ましたが、署名が純粋な Python で生成された場合、任意のデータの署名を生成するのは簡単です。データの完全性を証明するために家に電話することはできるかもしれませんが、それは関係者全員にとって大きな不便のようです.
sql - Drupal でデータの整合性を維持する:
私はたまたま Drupal でモジュールを開発しましたが、ビューの制限がいくつかあるように見えるため、カスタム SQL を使用する必要がありました。これにより、ノードのリビジョンでいくつかの問題が発生し、Drupal ではネイティブ メソッドを使用してデータを操作するのが最善であるという結論に達しました。そうしないと、データの整合性の問題が発生する可能性があります。
また、Drupal で SQL クエリを最適化したい場合でも、実際のボトルネックに対してまれに実行する必要があるようです。
このジレンマに関連して、どのような経験がありますか? ダイレクト SQL クエリと Drupal モジュール/関数?
sqlite - 突然電源が落ちたり、OS がクラッシュした場合、SQLite3 のデータベース ファイルは破損しますか?
データベース ファイルを開き、sqlite3 の open() メソッドを使用してデータベース接続を取得すると、プログラムが終了するまで接続が閉じられません。コンピュータの突然の電源オフやOSのクラッシュなどの予期しないエラーが発生した場合、データベース ファイルのモードが破損したり、ハンドルが失われたりしませんか? より具体的には、コンピューターを再起動しても書き込み可能な状態を維持できますか? ところで、エラーが発生したときのデータ損失は気にしません。
どうもありがとうございました!
atomic - Berkeley DB の使用はどの程度アトミックですか?
私はハッシュ内に 24 個の項目を含む単純なアプリを作成して、プログラムの実行間で永続化するため、Berkeley DB (DBM) がこのタスクに適しているはずです。
そして、それはただの楽しみです。
しかし、それを (Ruby で) 使用すると、ユーザーが CTRL-C を押すと、実行が停止するのではないかと思います。この場合、データがすべてめちゃくちゃになることはありませんか?
たとえば、DB の値が 63 の場合、1 ずつ増やします (64 になります)。
それで、「最も重要な」1が書き込まれ、0が書き込まれていないときにCTRL-Cが発生する可能性はありますか? その場合、DB の値は 63 または 64 ではなく 127 になります。Ruby ではなく C であり、ユーザーが「ウィンドウを閉じる」または「kill」を使用してプロセスを強制終了した場合はどうなるでしょうか。考えてみると、ハード ドライブはおそらくこのバイト (または 4 バイト) をハード ディスクの表面に一度に書き込むため、これは発生しないはずです。
CTRL-C でこれが起こらない場合、停電や自分で電源プラグを蹴ると、これが起こる可能性がありますか? たとえば、値が最初に RAM にキャッシュされ、それがハードディスクに書き込まれているときに、電源プラグを蹴ると、0 が書き込まれる前にハード ドライブの電源が失われます。100 万回に 1 度、これが起こらないことはわかっていますが、これは単なる好奇心の問題です。
一方、私のスクリプトが
- コインの価値を下げる
- ユーザーのインベントリに「ハンバーガー」を与える
次に、ユーザーが CTRL-C を押すと、上記の (1) と (2) のちょうど中間で発生し、ユーザーはコインを減らし、ハンバーガーを取得しません。
これらすべてが起こらないようにするには、SleepyCat、SQLite、または MySQL を使用したトランザクション メソッドを使用することになりますが、これらのいずれも発生しませんか?
c++ - C++ プライベートは本当にプライベートですか?
private
C++ でアクセス指定子の妥当性を試していました。ここに行きます:
インターフェース:
実装:
これを静的ライブラリ (.a/.lib) に組み込みました。これで、class_A.h と classA.a (または classA.lib) のペアができました。class_A.h を編集して削除しprivate:
ました。
今別のクラスTester.cppで:
ライブラリのヘッダーを改ざんした後、すべての賭けがオフになることを知っています (つまり、システムの整合性など)。メソッドはハックされていますが、これは本当に許可されていますか? これをブロックする方法はありますか?それとも、ここで何か間違ったことをしていますか?
sql-server - SQL Server:COMMITまで参照整合性を無視する方法は?
あるデータベースから別のデータベースに行を移動するプロセスがあります。一部の循環外部キー参照チェーンのため、古いデータベースから行を削除したり、新しいデータベースに行を挿入したりすることはできません。
操作全体がトランザクション1で発生するため、SQL Serverは、を呼び出すまで参照整合性の失敗を無視する必要がありますCOMMIT TRANSACTION
。
例2:
ターボエンカビュレーターを新しいテーブルに挿入しようとすると、マーセルベーンがすでに存在しないと失敗します。順序を逆にしても同じ問題があります。
古い行を削除しようとすると、もう一方が削除されるまで一方を削除できません。
私はnフェーズシステムを実行しようとしました。このシステムでは、すべての行が、外部キー制約がnullに設定されている列とともに挿入されます。次に、挿入されたすべての行を更新し、適切な欠落値を配置します。次に、ソース行を削除するために、FKの影響を受けるすべての列を無効にしてから、実際の行を削除します。3
私が本当に望んでいるのは、T-SQL操作を実行し、commitを呼び出そうとするまでSQLServerに通知しないようにすることです。
ノート
1分散
2私がもうやっていない架空の
3を考案しました
mysql - タイムシートツールのデータベースの正規化とデータの整合性の確保
タイムシートアプリケーションを作成しています。私は(とりわけ)次のエンティティを持っています:
- 会社
- 従業員=会社に関連する従業員
- クライアント=会社に関連付けられているクライアント
これまでのところ、次の(省略された)データベース設定があります。
今、私は従業員をクライアントに関連付けたいと思っていますが、そのクライアントがその従業員が働いている会社に関連付けられている場合に限ります。データベースレベルでこのデータの整合性をどのように保証しますか?または、このデータの整合性を保証するためにアプリケーションに依存する必要がありますか?
私はこのような多対多のテーブルを作成することを考えました:
したがって、従業員の会社IDとともに従業員のクライアントを挿入すると、クライアントが従業員の会社IDに関連付けられていない場合、データベースはこれを防ぐ必要があります。これは意味がありますか?これはまだ従業員が会社に関連付けられていることを保証するものではないためです。これらのことにどのように対処しますか?
更新
シナリオは次のとおりです。
会社には複数の従業員がいます。従業員は1つの会社にのみリンクされます。
会社には複数のクライアントもいます。クライアントは1つの会社にのみリンクされます。
(会社は、いわばサンドボックスです)。
会社の従業員は、その会社のクライアントにリンクできますが、そのクライアントが会社の顧客の一部である場合に限ります。
言い換える
と、このアプリケーションを使用すると、会社は従業員を作成/追加したり、クライアントを作成/追加したりできます(したがって、EmployeeテーブルとClientテーブルのcompanyId FK)。次に、会社は特定のクライアントを特定の従業員に割り当てることができます(EmployeeClientテーブル)。
従業員が請求可能な時間を書くことができるいくつかのクライアントのプロジェクトに取り組んでいると想像してください。しかし、従業員は、雇用主(会社)によって割り当てられていないクライアントの請求可能な時間を書くことを許可されてはなりません。そのため、従業員は会社のすべてのクライアントに自動的にアクセスできるのではなく、会社が選択したクライアントにのみアクセスできます。うまくいけば、これは問題にもう少し光を当てた。
mysql - データベースの禁止コンテンツを削除する必要がありますか?
私はhow to do with flagged data
ユーザーによる決定の前にいます。
禁止されているデータは、、、である可能性がありimage
、他wiki
のuser
何かをのように管理する必要がありますmessage board
。
多くの場合、悪い行動をしているユーザー、多くの活動をしているユーザー、最高の写真を持っているユーザーなどを見つけるために、できる限りのことをしたいと思っています...データを削除して次のような専用のテーブルを使用するかどうかはわかりませ
ん最良の決定です。user stats
stats_table
誰かが私に何かを提案できますか?
ありがとう
php - 効率的なデータのインポート?
私たちは多くの不動産を扱っており、データのインポート方法を再検討しているときに、興味深い問題に遭遇しました。
まず、システムの動作方法(大まかに言えば)は、FTP経由でIDXベンダーから提供されたデータを取得するColdfusionプロセスを1日1回実行することです。彼らは私たちにデータをプッシュします。彼らが私たちに送るものは何でも私たちが得るものです。
長年にわたって、これはかなり不安定であることが証明されています。
私は、データを取得するためのSOAPメソッドを使用するRETS標準のPHPを使用して再設計しています。これは、私たちが持っていたものよりもはるかに優れていることがすでに証明されています。
既存のデータを「更新」することになると、私の最初の考えは、更新されたデータのみを照会することでした。リストが最後に更新された日時を示す「変更済み」のフィールドがあり、私が持っているコードは、過去6時間以内に更新されたリストを取得します(何か問題が発生した場合に備えてウィンドウを表示します)。
ただし、多くの不動産開発業者が、常に実行されている更新されたステータスに関係なく、すべてのリストを実行する「バッチ」プロセスを作成することを提案しているのを目にします。
これはそれを行うためのより良い方法ですか?それとも、必要だとわかっているデータを取得するだけで大丈夫ですか?必要以上の処理をすることは私にはあまり意味がありません。考え?