我正在编写一个Python程序,它使用API键从外部服务访问数据。该程序使用我的Python脚本中硬编码的键调用此服务。是否有某种方法来保护该密钥(不是不可逆转的,而是防止人们直接从脚本复制密钥的方法)?程序应该从我的服务器请求密钥吗?也许是C图书馆?
发布于 2016-06-09 11:36:10
如果您想保护自己不受“黑客”的攻击,这是不可能的,因为如果python脚本可以访问您的API,那么这个脚本可以被修改为使用它所拥有的访问权限来做一些讨厌的事情。你必须在那里找到另一个解决方案。
如果你想保护自己不受“冲浪者”(当你经过时看着显示器的人)的影响,那么base64.b64encode("key")和base64.b64decode("a2V5==")就足够了。
发布于 2016-06-09 11:31:16
程序应该从我的服务器请求密钥吗?
即使这样,一个很有动力的人(或者是熟练的,或者两者都是)用户可以通过嗅探诸如Wireshark之类的工具(如果您没有使用https),甚至通过在某个地方添加一个print来修改您的脚本。
发布于 2016-06-09 11:40:52
不知道代码的体系结构,也许可以使用以下体系结构:
一种-> B -> C
A是你的客户代码,A向B提交请求
B是在您的专用服务器上的代理代码,并且已经在B代码中编码了您的api_key,B代码将使用api_key将您的A请求传输到C。
C是外部服务
然后,客户端代码将永远不会记录api密钥,api密钥将在您的私有服务器上,这类似于代理设计模式。
当然,如果您不希望这么复杂,您可以使用Py2exe将您的python代码打包为exe,这是另一个选项,FYI。
https://stackoverflow.com/questions/37724590
复制相似问题