Exception在C++/Java世界里似乎是个很不受欢迎的东西,没有认真去读这篇Why Exceptions Suck,只是感到很奇怪,在Perl和Lisp里面应用很广泛啊?!难道它们在理念上不是类似的吗?!
开发实践
SELinux
SELinux是Security Enhanced Linux的缩写。望文生义的时候还以为是关于黑客啊、攻击啊、漏洞啊之类的事情,这两天在读《SELinux by example》的时候才明白,原来这个东东竟然是用来对付程序员的,准确的说,是为了防止由于程序员的疏忽或错误对系统造成不可预料的伤害。
书中的例子是关于文件/etc/passwd,碰巧同时在读的《Mastering Perl》的第三章Secure Programming Techniques中也用这个文件举例。后者主要是说明处理外部数据时要格外当心,否则可能导致泄露系统信息。然而,要求每个程序员在写程序的时候都要打起120分的精力来注意安全问题是不现实的,总有这样那样的原因导致安全问题被有意无意的忽略。而且,与其让每个程序单独的考虑安全问题,不如将其放在一个集中的地方,就如同SELinux那样,使用各种规则来保证每个程序只能访问特定的系统资源,以及每种系统资源只能被特定的程序访问。
通俗地讲,即使某些应用程序在运行时被提升为具有root权限以访问某些系统资源,但是由于SELinux的存在,一个具有root权限的程序也不意味着它可以访问任何系统资源,相反,它只能访问那些被SELinux规则允许的系统资源,这样就避免了由于程序员的疏忽或错误而对系统造成伤害。