为了提高自己搭建的Django站点的安全性,将加密后的数据库连接信息以及加密使用的信息单独存放在了一个配置文件中,之后写了一个中间层来解密配置文件中的密文并用于站点应用连接数据库。虽然这样一种安全方式很初级,但起码比明文存放密码等敏感信息要好的多。
现在面临另外一个问题,因为最终密文形式的密码还是需要解密后才能使用的,上边提到的用于解密配置文件中的密文的中间层正是用于此目的。若恶意用户获取到了相关文件,很容易根据文件中的代码推测出加密使用的算法,也很容易获取的明文的密码,因此现在需要一种方式将python源代码转换成不能被“小人”轻易读取的文件形式。
怎么转换呢?其实通过将python源程序.py文件编译为字节码文件.pyc或.pyo就可以很好的达到上述目的(尽管这仍有可能被恶意着反编译为.py源文件,但至少算是有加强了一层防护,是无意的“君子”不至于这么轻松获取密码。)
那么该如何编译python源程序呢?
可以有多重形式:
python -m py_compile file.py #把单个.py文件编译为字节码文件
python -m py_compile /path/to/src/ #批量生成字节码文件,/path/to/src/是包含.py文件名的路径
python -m compileall file.py #把单个.py文件编译为字节码文件
python -m compileall /path/to/src/ #批量生成字节码文件,/path/to/src/是包含.py文件名的路径
或者:
python -O -m py_compile file.py
python -O -m py_compile /path/to/src/
python
现在面临另外一个问题,因为最终密文形式的密码还是需要解密后才能使用的,上边提到的用于解密配置文件中的密文的中间层正是用于此目的。若恶意用户获取到了相关文件,很容易根据文件中的代码推测出加密使用的算法,也很容易获取的明文的密码,因此现在需要一种方式将python源代码转换成不能被“小人”轻易读取的文件形式。
怎么转换呢?其实通过将python源程序.py文件编译为字节码文件.pyc或.pyo就可以很好的达到上述目的(尽管这仍有可能被恶意着反编译为.py源文件,但至少算是有加强了一层防护,是无意的“君子”不至于这么轻松获取密码。)
那么该如何编译python源程序呢?
可以有多重形式:
python -m py_compile file.py #把单个.py文件编译为字节码文件
python -m py_compile /path/to/src/ #批量生成字节码文件,/path/to/src/是包含.py文件名的路径
python -m compileall file.py #把单个.py文件编译为字节码文件
python -m compileall /path/to/src/ #批量生成字节码文件,/path/to/src/是包含.py文件名的路径
或者:
python -O -m py_compile file.py
python -O -m py_compile /path/to/src/
python