我正在编写一个Python程序,它使用API Key来访问外部服务的数据。该程序使用我的Python脚本中硬编码的密钥调用此服务。有没有一种方法可以保护这个密钥(不是不可逆转的东西,而是方法阻止人们直接从密钥中删除密钥)?程序是否应该从我的服务器请求密钥?也许是一个C库?
答案 0 :(得分:2)
程序是否应该从我的服务器请求密钥?
即使这样,一个积极性高(或技术熟练,或者两者兼有......)的用户也可以通过嗅探Wireshark等工具(如果你没有使用https),甚至通过修改脚本来获取密钥只需在某处添加print
即可。
答案 1 :(得分:2)
不知道代码的体系结构,也许您可以使用以下体系结构:
A - > B - > ç
A是您的客户代码,是对B的提交请求
B是您私人服务器上的代理代码,并且已经在B代码中对您的api_key进行编码,B代码会将您的A请求与api_key一起转移到C
C是外部服务
然后,客户端代码将永远不会记录api密钥,api密钥将在您的私人服务器上,这就像代理设计模式。
当然,如果你不想这么复杂,你可以使用Py2exe将你的python代码打包到exe,这是另一种选择,FYI。
答案 2 :(得分:1)
如果你想保护自己免受"黑客",那是不可能的,因为如果python脚本可以访问你的API,那么这个相同的脚本可以被修改为使用它拥有的访问来做恶劣的事情。你必须在那里找到另一种解决方案。
如果你想保护自己免受"肩膀冲浪者的伤害" (在他们经过时查看您的显示器的人),然后PDFRenderer renderer = new PDFRenderer(document);
BufferedImage image = renderer.renderImageWithDPI(0, 96); //Gets stuck here
ImageIO.write(image, "PNG", new File(fileName));
和from table t1
where TimeCreated = (select max(TimeCreated)
from table
where table.UserId = t1.UserId
and table.FileId = t1.FileId )
就足够了。