- 編程與類型系統(tǒng)
- (美)弗拉德·里斯庫迪亞
- 262字
- 2021-01-29 11:51:22
1.1 為什么存在類型
在低層的硬件和機(jī)器代碼級(jí)別,程序邏輯(代碼)及其操作的數(shù)據(jù)是用位來表示的。在這個(gè)級(jí)別,代碼和數(shù)據(jù)沒有區(qū)別,所以當(dāng)系統(tǒng)誤將代碼當(dāng)成數(shù)據(jù),或者將數(shù)據(jù)當(dāng)成代碼時(shí),就很容易發(fā)生錯(cuò)誤。這些錯(cuò)誤可能導(dǎo)致系統(tǒng)崩潰,也可能導(dǎo)致嚴(yán)重的安全漏洞,攻擊者利用這些漏洞,讓系統(tǒng)把他們的輸入數(shù)據(jù)作為代碼執(zhí)行。
JavaScript的eval()函數(shù)就是寬松解釋代碼的一個(gè)例子,它將一個(gè)字符串視為代碼執(zhí)行。當(dāng)提供給該函數(shù)的字符串是有效的JavaScript代碼時(shí),它的效果很好,但是如果提供的字符串不是有效的JavaScript代碼,就會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤,如程序清單1.1所示。
程序清單1.1 試圖將數(shù)據(jù)解釋為代碼

推薦閱讀
- ASP.NET Core:Cloud-ready,Enterprise Web Application Development
- 演進(jìn)式架構(gòu)(原書第2版)
- 觸·心:DT時(shí)代的大數(shù)據(jù)精準(zhǔn)營銷
- 編程珠璣(續(xù))
- 數(shù)據(jù)結(jié)構(gòu)習(xí)題精解(C語言實(shí)現(xiàn)+微課視頻)
- 機(jī)械工程師Python編程:入門、實(shí)戰(zhàn)與進(jìn)階
- The DevOps 2.4 Toolkit
- Data Analysis with Stata
- C語言程序設(shè)計(jì)同步訓(xùn)練與上機(jī)指導(dǎo)(第三版)
- Python+Tableau數(shù)據(jù)可視化之美
- 大學(xué)計(jì)算機(jī)基礎(chǔ)
- Web程序設(shè)計(jì):ASP.NET(第2版)
- ABAQUS6.14中文版有限元分析與實(shí)例詳解
- Android編程權(quán)威指南(第4版)
- 交互設(shè)計(jì)師成長手冊(cè):從零開始學(xué)交互