我需要帮助在python程序中存储数据。我不希望用户能够触摸数据。我看着泡菜,但很多帖子都说它“不安全”。在python中存储数据
回答
也许你应该看看CouchDB?您基本上将数据存储在JSON中作为文档。它完美的作品。
你作为内平均内存中,而不是在磁盘上?将数据存储在内存中并使整个程序易于访问的一个非常简单的解决方案是在程序的根目录中创建一个包含字典的python文件。
例如,PY/storage.py将包含:
data = {}
然后,你可以写它,像这样:
import storage
storage.data['foo'] = 'bar'
,然后在这样的另一个文件读取相同的价值:
import storage
foo = storage.data['foo']
在存储模块中的数据将是在程序中的所有其它模块可访问的,而将当程序退出时被删除。如果不修改程序,用户将无法触摸它。如果你需要更多的数据库相关的东西,sqlite允许你在内存中创建数据库,只要程序正在运行,只留在内存中
我不希望用户能够访问数据,而且,我要将该程序转换为.exe。 – mike 2011-06-02 22:01:25
你不能停止用户触摸数据。如果他们正在他们的系统上运行一个程序,他们可以在写入磁盘之后用它们做任何他们想做的事情。您可以以各种方式混淆数据,甚至可能对其进行加密,但如果确定它们,它们仍然可以最终实现。如果您需要证明,请查看每个发明的每个版权保护/ DRM系统的绝对故障。有些解决方案“足够好”,但不知道你实际想要解决什么问题,没有好的方法来开始提供切合实际的选择。
...和皮克尔很好,如果你可以信任你的数据。如果您可以合理确定您的程序将文件写入磁盘,并且恶意程序没有主动针对您的应用程序,那么这是安全的。我永远不会相信通过网络发送的一个pickle,然而 - 一个pickle可能会在反序列化过程中执行任意命令。
如果用户将在他的机器上运行您的程序,您将无法隐藏数据。
运行该程序的用户可以访问程序可以访问的所有内容,只是知道去哪里看的问题。
如果您正在与最终用户打交道,那么只需在最后一点对数据进行加密和解密,然后再使用它。请记住,在某些时候,数据必须在内存中解密,然后用户才能看到它。
你可以尝试停止程序运行,如果它已被篡改,例如通过比较其(md5)哈希值与已知的良好值。查看Chrome OS项目,了解一个系统的例子。
您可以试图阻止用户了解您的程序和写入磁盘的数据,例如通过加密并隐藏解密子例程或通过混淆源代码。
但是,您无法阻止已确定的用户销毁您的程序及其数据或中断它。一旦你的程序处于空中,我认为它的内存段受到其他进程的访问保护。尽管如此,这并不能阻止用户进行反编译,并在运行之前试图理解您的程序。
安全旨在保护软件不受其所有者的威胁,必然要依赖聪明的黑客。请记住,你的聪明黑客受到其他聪明黑客的规避。 Python被设计成一种开放的语言,所以如果你打算设计“鬼鬼祟祟”的程序,你可能会对其他语言有更好的运气。
如果您需要保护数据免遭篡改(但您并不担心有人看到数据),那么使用自定义加载程序部署您的项目是诸如signet(http://jamercee.github.io/signet/)之类的方式。把你的数据blob放在你的脚本中,并且它的值将被合并到它的sha1计算中。如果有人要修改数据blob,加载器会将其检测为篡改,并拒绝运行它。
- 1. 在Python中存储用户数据
- 2. python,在数据框中存储字典
- 3. 在python中存储json数据
- 4. Python,在数据库中存储字典
- 5. 使用Flask(Python)在Google数据存储中存储图像
- 6. 在Python中存储分数
- 7. 存储大数据python
- 8. 存储常量数据:python模块与数据存储区
- 9. 在Python本地存储数据
- 10. 查询的数据存储在python
- 11. Python中的简单数据存储
- 12. 在Ram中存储数据
- 13. 在FirefoxOS中存储数据
- 14. 在IndexedDB中存储数据
- 15. 在MySQL中存储数据
- 16. 在javascript中存储数据
- 17. PowerCLI - 在数据存储中查找数据存储
- 18. 在android数据库中存储数据
- 19. 不在数据库中存储数据
- 20. 根据数据集中的位置存储数据python
- 21. python中的数组存储
- 22. 在XML中解析数据并在Python中存储到数据库
- 23. 无法存储在数据存储gcloud
- 24. 存储器中的数据存储 - Javascript
- 25. 在python中缓存数据库数据
- 26. 使用python将数据库数据存储到json文件中
- 27. 数据存储以简化Python中的数据插值
- 28. 存储在Python
- 29. 在字典中存储函数[Python]
- 30. GAE Python数据存储查询
你看过Cerealizer吗? http://home.gna.org/oomadness/en/cerealizer/index.html – 2011-06-02 21:32:17
你的意思是“触摸数据”?你在谈论恶意用户吗?只要你把你的程序给别人,他们**就能够发现它是如何工作的以及如何摆弄这些数据。其他一切只是尽可能减慢它们的一个问题。您是否在寻找关于如何减缓恶意用户的建议? – jwd 2011-06-02 22:23:32
这与防篡改饼干的概念基本相同。我会开始了解这些。 – Triptych 2011-06-03 11:50:41