PL/SQL security guidelines for developers
安全的重要性不言而喻,不过和多时候,不管我们做什么开发,这个话题都不太好做到保险,对于我们开发人员来说,从开发人员的角度保证程序的安全性也是非常重要的,这样可以最大限度地保证我们的系统的安全。
最近一直都在使用PL/SQL进行开发,有事没事地学习这个咚咚,不过我发现比较容易让人忽略的部分就是PL/SQL的安全性,这里我把最近学习的东西记录一下。
l
提高用户的安全意识
很多开发者肯定面对过我们的最终用户,呵呵,我们平时不能认为他们的安全意识有很高,其实他们很多时候都不太注意,所以我们系统给他们用的时候,一定要告诉他们什么地方比较敏感,不要泄露。
l
不要在shell脚本中泄露密码
记得以前我登陆数据库的时候都是:sqlplus username/password as sysdba, 后来有一次培训的时候老师说到这样比较危险,就是别的用户用ps –ef就可以看到我的用户名和密码,呵呵,后来再也不那么干了,虽然我的机器只是用来开发。
其实比较正确而且省事的做法就是把用户名密码隐藏,然后设置一下权限,不让别人读写什么的,然后:
Sqlplus /nolog
@connect.sql –用户密码保存在这里
最近sql loader也用的比较多,呵呵,因为import数据的时候,总是要用到用户名和密码,于是用到下面的办法:
1、 把我的用户名密码保存在下面的文件中:
connect.sql
2、 用下面的做法就可以了(Unix)
cat connect.sql | sqlldr control=………………
l
Code review
过程和函数有时候也能够被sql injection, 呵呵,所以,有时候仔细地阅读代码是非常重要的,有时候能够发现一些漏洞。
从书上学到的窍门:
1、 如果可能的话,用Authid current_user(调用者权限)来创建程序
2、 尽量避免用动态的PL/SQL
3、 如果要用动态的PL/SQL,一定要在运行之前check动态部分的有效性
4、 尽量check输入的数据
5、 尽量使用绑定变量,尽量不要用字符串连接
l
加密数据
数据传输的过程中被窃听很容易的,所以数据的加密是非常必要的,可以使用下面的办法:
1、 使用SSL
2、 自己加密数据或者使用Oracle自带的加密工具
l
加密代码
当我们的代码让别人看到的时候,别人就可以研究代码并且发现漏洞,在Oracle中很容易看代码吧,点几下鼠标就看到了,呵呵!
可以用Oracle的wrap命令来加码我们的PL/SQL文件,方法如下:
wrap iname=inputfile oname=outputfile
这样最大的好处是我们的程序文件是完全不影响使用的,呵呵!
以上这些我比较认同是我们开发人员应该在日常开发中注意的东西,其实对于开发人员来讲,做到程序的安全是比较容易地,只要我们平时意识到,并且稍微多做点工作就好了。