我最近了解了Java的安全模型.大多数人认为Java是安全的,因为它不受缓冲区溢出等的影响,但是整个Java安全模型都集中在检查代码是否有权采取某些操作.他们真正解决了一个具有挑战性的问题:如何让任意不受信任的代码(例如在网络浏览器中)运行但是无法以恶意方式访问底层系统,同时保留以某种方式与系统交互的能力.
Sandboxed C++或类似的东西甚至很难尝试,因为语言要求你能够做指针算术等,允许恶意代码破坏过程的其他部分.但是,由于有许多内存安全的语言,我想知道其他语言有哪些复杂的安全模型以及它们与Java的比较.
我不知道有多少语言努力拥有像"沙盒"等概念.我正在寻找一些指导来了解这个有趣的计算机安全方向.
Perl 有一个非常巧妙的功能,称为污点模式 ( -T)。启用该模式后,来自外部世界的任何变量(环境变量、GET/POST 数据等)都会受到污染,并且任何接触受污染变量的变量也会受到污染。受污染的变量不能在接触外部世界的方法中使用(SQL、exec/system 等)。取消变量污染的唯一方法是对其执行正则表达式;任何匹配的组都未被污染。当然,您可以通过为 执行正则表达式来绕过污染模式/(.*)/,但想法是您必须主动编写这样的糟糕代码 - 而不是只是粗心地忘记清理您的输入 - 如果您要做某事就像将用户输入直接连接到 MySQL 一样愚蠢。
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |