问题标签 [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 中开发了一个模块,由于一些看似 View 的限制,我不得不使用自定义 SQL。这让我在节点修订方面遇到了一些问题,我得出的结论是,在 Drupal 中最好使用它的本地方法来处理任何数据。否则,可能会出现数据完整性问题。
即使希望在 Drupal 中优化 SQL 查询,显然这应该在极少数情况下针对真正的瓶颈进行。
你有什么与这个困境相关的经验 - 直接 sql 查询与 Drupal 模块/功能?
sqlite - SQLite3的数据库文件在突然断电或操作系统崩溃时会损坏吗?
我使用 sqlite3 的 open() 方法打开数据库文件并获得数据库连接,直到程序退出后连接才会关闭。如果出现计算机突然断电或操作系统崩溃等意外错误,是否会损坏数据库文件的模式,或丢失其句柄?更具体地说,如果我重新启动计算机,它可以保持可写状态吗?顺便说一句,我不关心发生错误时的数据丢失。
非常感谢你!
sql - 一列中混合日期的 SQL Select 语句是什么?
我有一个客户将遗留数据存储在 Oracle 数据库中。此类数据在数据库的一列中包含混合的 DATE 值(该字段是 VARCHAR(32))。例如,它们存储“2009 年 9 月 30 日”,有时存储“1254431689”(即纪元时间的时间戳)。
我没有选择将数据分成多列(所以我必须处理它)。
问题是 - 如何在 SQL Select 语句中动态转换数据?
atomic - Berkeley DB 使用的原子性如何?
我正在编写一个简单的应用程序,其中包含 24 个项目的哈希值,以便在程序执行中保持不变,因此 Berkeley DB (DBM) 应该非常适合这项任务。
这只是为了好玩。
但我想知道是否使用它(与 Ruby 一起使用),然后当用户按下 CTRL-C 时,执行就会停止。这种情况下,是不是数据都乱了?
例如,如果 DB 中的值为 63,我将其加 1(变为 64)
那么,当“最重要的”1 被写入但 0 还没有被写入时,CTRL-C 是否会发生?在这种情况下,DB 中的值将是 127 而不是 63 或 64。如果不是 Ruby 而是 C 语言,并且用户使用“关闭窗口”或“杀死”来终止进程怎么办?想一想,硬盘驱动器可能一次将这个字节(或4字节)全部写入硬盘表面,所以这种情况不应该发生。
如果 CTRL-C 不会导致这种情况发生,那么停电或我踢电源插头可能会导致这种情况发生?例如,当值第一次缓存在 RAM 中,当它被写入硬盘时,我踢了电源插头,硬盘驱动器在写入 0 之前就断电了。我知道百万分之一,这不会发生,但这只是好奇的问题。
另一方面,如果我的脚本是
- 减少硬币价值
- 在他的库存中给用户一个“汉堡包”
然后当用户按下 CTRL-C 时,它恰好发生在上面的 (1) 和 (2) 之间,那么用户将拥有更少的硬币,并且不会得到汉堡包。
为了防止这一切发生,那就是使用SleepyCat、SQLite或MySQL的事务方法,这些都不会发生?
c++ - C++ Is private really private?
I was trying out the validity of private
access specifier in C++. Here goes:
Interface:
Implementation:
I built this in to a static library (.a/.lib). We now have a class_A.h and classA.a (or classA.lib) pair. I edited class_A.h and removed the private:
from it.
Now in another classTester.cpp:
I know that after tampering a library's header all bets are off (I mean, system integrity, etc.) Albeit the method being hacky, is this really allowed? Is there a way to block this? Or am I doing something wrong here?
sql-server - SQL Server:如何在 COMMIT 之前忽略参照完整性?
我有一个将行从一个数据库移动到另一个数据库的过程。由于一些循环外键引用链,我无法从旧数据库中删除行,也无法将它们插入新数据库。
由于整个操作发生在事务1中,我希望 SQL Server 忽略引用完整性失败,直到我调用COMMIT TRANSACTION
。
例如2:
如果我尝试将turboencabulator插入新表中,它会在没有marselvane的情况下失败。颠倒顺序也有同样的问题。
尝试删除旧行时,我无法删除其中一个,直到另一个被删除。
我尝试过做一个n阶段系统,其中插入所有行,并将外键约束下的任何列设置为null。然后我更新所有插入的行,放置正确的缺失值。然后,为了删除源行,我将受FK影响的所有列清空,然后删除实际行。3
我真正喜欢的是只执行我的 T-SQL 操作,并且在我尝试调用 commit 之前让 SQL Server 不告诉我。
笔记
1分布式
2人为的假设
3我不再做
mysql - 时间表工具的数据库规范化并确保数据完整性
我正在创建一个时间表应用程序。我有以下实体(其中包括):
- 公司
- 员工= 与公司关联的员工
- 客户= 与公司关联的客户
到目前为止,我有以下(缩写)数据库设置:
现在,我希望员工与客户相关联,但前提是该客户与员工工作的公司相关联。您将如何保证数据库级别的数据完整性?或者我应该仅仅依靠应用程序来保证这个数据的完整性?
我想过像这样创建一个多对多表:
因此,当我为员工插入客户以及员工的公司 id 时,当客户与员工的公司 id 没有关联时,数据库应该阻止这种情况。这有意义吗?因为这仍然不能保证员工与公司有关联。你如何处理这些事情?
更新
场景如下:
一家公司有多名员工。员工只会与一家公司联系。
一家公司也有多个客户。客户只会与一家公司相关联。
(公司是一个沙盒,可以这么说)。
公司的员工可以链接到其公司的客户,但前提是客户是公司客户的一部分。
换句话说:
应用程序将允许公司创建/添加员工和创建/添加客户(因此在 Employee 和 Client 表中的 companyId FK)。接下来,公司将被允许将某些客户分配给它的某些员工(EmployeeClient 表)。
想象一个员工为几个客户工作,她/他可以为其编写计费时间,但不得允许该员工为他们的雇主(公司)未分配给他们的客户编写计费时间。因此,员工不会自动访问公司的所有客户,而只能访问公司为他们选择的客户。希望这对此事有更多的了解。
mysql - 我应该删除我的数据库中的禁止内容吗?
我在how to do with flagged data
用户的决定面前。
被禁止的数据可能是 a image
、 a wiki
、 anuser
以及需要像 a 一样管理的其他内容message board
。
我想user stats
在很多情况下与我合作,寻找行为不良的用户、有很多活动的用户、拥有最佳照片的用户等等……我不确定是否删除数据并使用专用表格,例如stats_table
是最好的决定。
有人可以给我一些建议吗?
谢谢
php - 高效的数据导入?
我们与很多房地产合作,在重新构建数据导入方式时,我遇到了一个有趣的问题。
首先,我们系统的工作方式(粗略地说)是我们每天运行一次 Coldfusion 进程,该进程通过 FTP 检索从 IDX 供应商提供的数据。他们将数据推送给我们。他们寄给我们的东西就是我们得到的东西。
多年来,这已被证明是相当不稳定的。
我正在 RETS 标准上使用 PHP 重新构建它,该标准使用 SOAP 方法来检索数据,这已经被证明比我们拥有的要好得多。
当谈到“更新”现有数据时,我最初的想法是只查询已更新的数据。有一个“已修改”字段告诉您上次更新列表的时间,我拥有的代码将获取过去 6 小时内更新的任何列表(给自己一个窗口,以防出现问题)。
但是,我看到很多房地产开发商建议创建贯穿所有列表的“批处理”流程,而不管不断运行的更新状态如何。
这是更好的方法吗?或者我可以只获取我知道我需要的数据吗?做不必要的处理对我来说没有多大意义。想法?