官术网_书友最值得收藏!

1.3.4 其他語言

由于C本身存有這些內(nèi)在的問題,因此很多安全專家推薦使用其他語言,例如Java。盡管Java解決了C存在的很多問題,但它仍然容易導(dǎo)致實(shí)現(xiàn)層次或設(shè)計(jì)層次的安全缺陷。Java原生接口(Java Native Interface,JNI)允許Java與用其他語言編寫的應(yīng)用程序和代碼庫進(jìn)行交互,使得最終的系統(tǒng)可以由Java和C或C++寫的組件組合而成。

考慮到已有的對C源代碼、編程經(jīng)驗(yàn)以及開發(fā)環(huán)境的投資,Java往往并非是一個(gè)可行的方案。有時(shí)出于性能或其他和安全無關(guān)的因素的考慮,也可能會選擇C。不管是什么原因,只要選擇了用C和C++開發(fā)程序,產(chǎn)生安全代碼的重?fù)?dān)很大程度上就落到了程序員的肩上。

另一種選擇是使用C的方言,如Cyclone[Grossman 2005]。Cyclone的設(shè)計(jì)目標(biāo)是在保持C的語法、類型、語義和慣用法不變的基礎(chǔ)上提供與Java同樣的安全保證(使得任何合法的程序都難以產(chǎn)生安全漏洞)。Cyclone目前在Inte l32位架構(gòu)(IA-32)的Linux以及Windows(使用Cygwin)得到了支持 [1]

盡管有這些特點(diǎn),但對于工業(yè)應(yīng)用,Cyclone可能不是一個(gè)合適的選擇,因?yàn)樵撜Z言相對不流行,隨之導(dǎo)致工具和程序員的缺乏。

D是一門適用于系統(tǒng)和應(yīng)用程序的通用編程語言。D主要基于C++語言,但去掉了諸如C源代碼的兼容性和與C++鏈接兼容性等功能,使得D提供了消除或至少減少常見編程錯(cuò)誤的語法和語義結(jié)構(gòu)[Alexandrescu 2010]。

[1] Cygwin是一種適用在Windows上的類Linux環(huán)境。
主站蜘蛛池模板: 嘉义市| 榆社县| 阿克| 厦门市| 永济市| 元氏县| 融水| 阿拉尔市| 大理市| 礼泉县| 中方县| 鄢陵县| 温州市| 宣武区| 同德县| 万年县| 庄浪县| 洞口县| 鄂伦春自治旗| 莱芜市| 鄂托克前旗| 屯门区| 永丰县| 湄潭县| 巴林右旗| 邓州市| 上犹县| 当阳市| 灵台县| 昌邑市| 禹城市| 衡东县| 长武县| 靖州| 铜梁县| 隆德县| 漯河市| 寿光市| 常德市| 宿迁市| 盱眙县|