- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 521字
- 2020-10-30 17:56:35
1.3.4 其他語言
由于C本身存有這些內(nèi)在的問題,因此很多安全專家推薦使用其他語言,例如Java。盡管Java解決了C存在的很多問題,但它仍然容易導(dǎo)致實現(xiàn)層次或設(shè)計層次的安全缺陷。Java原生接口(Java Native Interface,JNI)允許Java與用其他語言編寫的應(yīng)用程序和代碼庫進行交互,使得最終的系統(tǒng)可以由Java和C或C++寫的組件組合而成。
考慮到已有的對C源代碼、編程經(jīng)驗以及開發(fā)環(huán)境的投資,Java往往并非是一個可行的方案。有時出于性能或其他和安全無關(guān)的因素的考慮,也可能會選擇C。不管是什么原因,只要選擇了用C和C++開發(fā)程序,產(chǎn)生安全代碼的重?fù)?dān)很大程度上就落到了程序員的肩上。
另一種選擇是使用C的方言,如Cyclone[Grossman 2005]。Cyclone的設(shè)計目標(biāo)是在保持C的語法、類型、語義和慣用法不變的基礎(chǔ)上提供與Java同樣的安全保證(使得任何合法的程序都難以產(chǎn)生安全漏洞)。Cyclone目前在Inte l32位架構(gòu)(IA-32)的Linux以及Windows(使用Cygwin)得到了支持 [1]。
盡管有這些特點,但對于工業(yè)應(yīng)用,Cyclone可能不是一個合適的選擇,因為該語言相對不流行,隨之導(dǎo)致工具和程序員的缺乏。
D是一門適用于系統(tǒng)和應(yīng)用程序的通用編程語言。D主要基于C++語言,但去掉了諸如C源代碼的兼容性和與C++鏈接兼容性等功能,使得D提供了消除或至少減少常見編程錯誤的語法和語義結(jié)構(gòu)[Alexandrescu 2010]。
- 玩轉(zhuǎn)Scratch少兒趣味編程
- 程序設(shè)計與實踐(VB.NET)
- Visual Basic程序開發(fā)(學(xué)習(xí)筆記)
- JavaScript語言精髓與編程實踐(第3版)
- Mastering Ember.js
- Java入門很輕松(微課超值版)
- Three.js開發(fā)指南:基于WebGL和HTML5在網(wǎng)頁上渲染3D圖形和動畫(原書第3版)
- PHP 編程從入門到實踐
- Kotlin從基礎(chǔ)到實戰(zhàn)
- Visualforce Developer’s guide
- Elasticsearch Blueprints
- Android技術(shù)內(nèi)幕(系統(tǒng)卷)
- SQL Server on Linux
- Google Maps JavaScript API Cookbook
- Learning Zimbra Server Essentials