我正在使用聊天工具,我需要让用户手动输入ECDHE公钥(64个十六进制字符)。我将通过说它与硬件隔离有关来总结为什么需要它。问题是,用户可能会遵循恶意指令并向软件输入任意字符串。我担心输入可能会利用python解释器或我的代码。
为了防止后者,我通过迭代字符串并检查char是否在允许的十六进制字符列表上来验证字符输入。然后我将长度与==
进行比较。之后,使用binascii.unhexlify()
将密钥转换为二进制。
我是否应该采取其他措施来保护输入,或者我应该考虑什么?检测字符串最安全,最早的方法是什么格式不正确?
如果系统内存不足,我会向MemoryException
添加一个优雅的退出。我认为动态内存分配不会遇到严重问题,但我仍然担心;该功能过去是否存在漏洞?
另外,我了解eval()
python3 ,输入 python2 完全不安全。我将在未来的某个时间将我的 python2 代码移植到3中。我如何确保 python3 代码input()
如果使用 python2 解释程序执行,则不会像eval(raw_input())
那样处理?