- C和C++安全編碼(原書第2版)
- (美)Robert C.Seacord
- 521字
- 2020-10-30 17:56:35
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]。
- iOS Game Programming Cookbook
- Spring 5.0 Microservices(Second Edition)
- Learning PostgreSQL
- CockroachDB權(quán)威指南
- Microsoft Application Virtualization Cookbook
- Developing Middleware in Java EE 8
- Visual Basic程序設(shè)計(jì)教程
- Hands-On RESTful Web Services with Go
- AutoCAD VBA參數(shù)化繪圖程序開發(fā)與實(shí)戰(zhàn)編碼
- Visual C#通用范例開發(fā)金典
- 硅谷Python工程師面試指南:數(shù)據(jù)結(jié)構(gòu)、算法與系統(tǒng)設(shè)計(jì)
- Quantum Computing and Blockchain in Business
- 智能搜索和推薦系統(tǒng):原理、算法與應(yīng)用
- Practical Microservices
- 零基礎(chǔ)看圖學(xué)ScratchJr:少兒趣味編程(全彩大字版)