整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          百度安全的 OpenRASP 項(xiàng)目 究竟是什么?

          到最后,c0debreak打開了一個(gè)“機(jī)密文檔”給我看。這是一個(gè)宅男積累多年的秘密,我瞇著眼好奇地湊過去,里面密密麻麻的都是。。。。對最新網(wǎng)絡(luò)安全技術(shù)的研究筆記。

          “我讓你給我展示一下和工作無關(guān)的‘業(yè)余愛好’,XX都X了,你就給我看這個(gè)?”我怒道。

          “對啊,這就是和工作無關(guān)的業(yè)余愛好啊。因?yàn)檫@些技術(shù)現(xiàn)在都還用不到工作里。” c0debreak一臉呆萌。

          瞬間,我特別想見見那個(gè)馬上就要和他結(jié)婚的妹子,據(jù)說她也是個(gè)程序員。我強(qiáng)烈懷疑他們的蜜月旅行會是:在用馬爾代夫海灘做桌面的電腦上敲代碼。

          c0debreak,百度安全工程師,一個(gè)比百度工程師還像百度工程師的百度安全工程師。其實(shí),c0debreak還有另一個(gè)身份,那就是OpenRASP項(xiàng)目負(fù)責(zé)人。

          OpenRASP,看到這個(gè)名字時(shí),估計(jì)很多人也像我一樣升騰起不明覺厲的感覺。(我覺得凡是名字里帶有五個(gè)大寫字母的項(xiàng)目都挺有前途,例如:CPPCC,不知道的童鞋可自行百度)其實(shí),OpenRASP是一個(gè)百度安全旗下的免費(fèi)開源安全項(xiàng)目,全稱應(yīng)該是:Opensource Runtime Application Self-Protection開源實(shí)時(shí)程序自保護(hù)系統(tǒng)。它隸屬于百度OAESE智能終端安全生態(tài)聯(lián)盟,是其中五大開放技術(shù)之一。

          作為一個(gè)把復(fù)雜科技講簡單的媒體,我總結(jié)這套系統(tǒng)的功能就是——檢測網(wǎng)絡(luò)入侵,從而發(fā)現(xiàn)漏洞。

          在這類功能的系統(tǒng)中,最著名的要數(shù) WAF,也就是Web應(yīng)用防火墻。WAF被設(shè)置在應(yīng)用的外部邊界上,可以通過特定的規(guī)則和模式識別出惡意請求,并且把它們拒之門外,是一種被廣泛應(yīng)用,連程序員家的貓都知道的網(wǎng)絡(luò)安全系統(tǒng)。

          我們就是想顛覆 WAF!

          難以想象,一個(gè)不愛說話只對你呵呵笑的宅男工程師在沉默了五秒之后突然認(rèn)真地看著你,沒有一點(diǎn)過度直接說出這么一句“豪言壯語”。

          一、顛覆 WAF的 OpenRASP到底是神馬?

          在 c0debreak看來,傳統(tǒng)WAF存在一個(gè)非常大的問題,概括起來就是:“因?yàn)椴粔蛏睿圆粔蛩薄榱藢Ρ榷叩募夹g(shù)實(shí)現(xiàn)方式,下面我們以一幢辦公樓的安保來舉個(gè)例子:

          WAF——門衛(wèi)模型

          WAF代表大樓的門衛(wèi),很遺憾這里的門衛(wèi)并沒有朝陽大媽那種柯南般的智慧。每當(dāng)走進(jìn)一個(gè)人,他只會攔下來問:“來者何人?”并且把這個(gè)人的形態(tài)樣貌和手里的冊子(特征庫)一一核對。如果不是“在案”的壞蛋,就一律放行。

          雖然特征庫在不停升級,但是從壞人的角度來看,這樣的門衛(wèi)并非無懈可擊。如果我是小偷,我今天來的時(shí)候可以戴一頂紅帽子,明天可以換一頂綠帽子,后天甚至男扮女裝。對于技術(shù)水平一般的 WAF來說,很可能“穿上馬甲你就不認(rèn)識我了”。而智能程度高一些的WAF,可以利用技術(shù)識別出一些“變裝”伎倆,但這時(shí)對方同樣可以用“整容”甚至“換人”的方法,加大成本再次騙過門衛(wèi)的眼睛。

          如果想有效地阻止壞人,WAF必須以非常高的頻率升級特征庫,但即使是這樣,它仍然無法擺脫兩個(gè)弊端:1、永遠(yuǎn)追在敵人后面跑。2、高居不下的誤報(bào)率。

          OpenRASP——管家模型

          RASP技術(shù),干脆選擇了另一個(gè)思路,它把防護(hù)系統(tǒng)跑在每一個(gè)應(yīng)用內(nèi)部。還是以大樓作比喻,這相當(dāng)于在每個(gè)辦公室里都設(shè)置了一位管家(就是上圖這個(gè)Superman)。無事不登三寶殿,壞人進(jìn)入大樓,肯定是要做壞事的。所以RASP的思路是:你長了一張什么臉我并不關(guān)心,重要的是你有沒有在房間里做出“攻擊動作”。

          c0debreak給我看了OpenRASP的技術(shù)文檔,里面列舉了25類“攻擊動作”。

          這其中包括:數(shù)據(jù)庫 SQL注入、數(shù)據(jù)庫慢查詢、任意文件上傳、敏感文件下載等等。。。

          每一個(gè)攻擊場景,都有具體的代碼描述,而這種描述,相比 WAF上繁復(fù)的規(guī)則要簡單許多。正如世界上的騙局有千萬種,但最后無外乎是把你口袋里的錢掏出來;世界上越獄的方法有千萬種,但最終的動作都是離開牢房;漢子們對姑娘的花言巧語永遠(yuǎn)在翻新,但最終目標(biāo)都是【此處省略三個(gè)字】。只要你能站在事件的邏輯中心,分辨出真?zhèn)紊茞壕拖鄬θ菀缀芏唷?/p>

          利用對“攻擊動作”的判斷,OpenRASP可以比較精準(zhǔn)地揪出惡意攻擊行為,有了惡意行為,就可以由此回溯,找到未被發(fā)現(xiàn)的漏洞。

          二、OpenRASP厲害在什么地方?

          如果不考慮技術(shù)實(shí)現(xiàn)的難度和成本,顯然為每間辦公室單獨(dú)設(shè)置一個(gè)管家比在大門口設(shè)置門衛(wèi)的模式更為安全,因?yàn)楣芗覀兛梢钥吹介T衛(wèi)看不到的“詳情”。類比到 WAF和OpenRASP上,這意味著兩種安全系統(tǒng)可供判斷的信息量是不一樣的。

          WAF掌握的是軟件的“入口流量”,

          而 OpenRASP卻掌握了內(nèi)部所有動作的“上下文聯(lián)系”。

          這同樣可以用一個(gè)例子來說明:

          在 WAF所代表的“門衛(wèi)模型”中,如果一個(gè)人帶著錘子進(jìn)入辦公樓,門衛(wèi)無權(quán)攔截他,因?yàn)檫@個(gè)人并沒做什么傷天害理的事情,而且依照規(guī)章,帶錘子進(jìn)入辦公室也未嘗不可。

          在 OpenRASP所代表的“管家模型”中,同樣還是這個(gè)人,進(jìn)入辦公室之后,卻猛地用錘子砸向文件柜上面的鎖,那么毋庸多言,管家上來一個(gè)掃堂腿撂倒便是。

          你看,之所以門衛(wèi)不敢攔下這個(gè)拿錘子的人,就是因?yàn)樗徽莆者@個(gè)人接下來的行動信息。而房間里的管家,卻是有充足把握做出判斷的。

          實(shí)際上,OpenRASP身處應(yīng)用內(nèi)部,還有諸多的好處。為了說明OpenRASP技術(shù)的優(yōu)點(diǎn),c0debreak用了四個(gè)關(guān)鍵詞:

          1、誤報(bào)

          廣義的黑客“攻擊”,應(yīng)該包含兩個(gè)方面:1、掃描;2、實(shí)際進(jìn)攻。這大概對應(yīng)著竊賊的“踩點(diǎn)”和“盜竊”兩個(gè)步驟。

          這里有一個(gè)重要的認(rèn)知:“踩點(diǎn)”本身是不違法的,甚至對你來說是不用在意的。

          為什么這樣說呢?看過阿凡提的叔叔阿姨們應(yīng)該記得,有一集講的是盜賊挨家挨戶踩點(diǎn),最終選定了幾家作為盜竊對象,并且在門口標(biāo)記了記號準(zhǔn)備晚上“光臨”。(當(dāng)然陰謀被神勇的阿凡提發(fā)現(xiàn)了并且把每一家門口都畫上了同樣的記號)

          科普一下竊賊在你門口做標(biāo)記的含義

          我想說的是,你家大門被各種人打量,并不意味著你一定會被盜。說回黑客攻擊,借助自動化工具,黑客進(jìn)行的掃描行為可能是實(shí)際進(jìn)攻行為的萬倍或億倍之多。這是一種典型的“廣種薄收”的策略,絕大多數(shù)掃描僅僅停留在掃描。如果你的系統(tǒng)沒有攻擊價(jià)值,或沒有他掌握的漏洞,黑客根本就不會對你采取下一步動作。

          有了這個(gè)背景知識,你就可以進(jìn)一步感受 WAF和OpenRASP的區(qū)別了。

          c0debreak給我舉了個(gè)栗子:

          如果有人掃描了一個(gè)根本不存在的路徑,這很可能就是自動化程序進(jìn)行的掃描,產(chǎn)生威脅的可能性非常小。但是由于 WAF不掌握應(yīng)用內(nèi)部的信息,它沒辦法判斷掃描的危害性有多大,因此保險(xiǎn)起見只能報(bào)警。

          這時(shí) OpenRASP的優(yōu)勢就非常明顯,它知道應(yīng)用內(nèi)部的路徑,所以就會選擇不報(bào)警。

          這就是 OpenRASP誤報(bào)率低的原理之一。

          2、兼容

          如果你看過《唐人街探案2》或者更早的《不見不散》,你可能記得里面都出現(xiàn)了中國人教美國警察說漢語的細(xì)節(jié)。為啥美國的警察要學(xué)說漢語?很簡單,因?yàn)樽鳛榘踩Pl(wèi)者,需要和你的被管理者有語言交流。

          一個(gè)正常的應(yīng)用,在URL里面用“&”來分割請求參數(shù),但是,在有些語言中,也可以用“;”來分割。如果你不知道參數(shù)還可以這樣寫,那么你一定會漏掉一些攻擊的代碼。

          c0debreak說。

          還是之前的原理,WAF存在于應(yīng)用之外,它不知道也不關(guān)心應(yīng)用本身是什么語言寫成的。這就很難完全兼容后端應(yīng)用的特性,而 c0debreak和團(tuán)隊(duì),根據(jù)Java、PHP等每一種語言來獨(dú)立開發(fā)。這雖然會耗費(fèi)很多時(shí)間和精力,但是換來了非常好的兼容性。

          3、應(yīng)用熱補(bǔ)丁

          正如之前所說,同一類漏洞,在黑客手里可能被披上各種偽裝來使用。這些相似的攻擊方法,在 WAF看來卻沒有內(nèi)在聯(lián)系,對于每一種都要逐一添加規(guī)則。其實(shí),這樣做的最大問題并不在于“笨”,而是在于“慢”。

          一旦黑客成功突破進(jìn)入系統(tǒng),就有可能迅速安插后門。后門設(shè)置成功,就相當(dāng)于多了一條供他來去自由的密道,根本不用再走大門。WAF再想發(fā)現(xiàn)他的難度就大大增加。

          而 OpenRASP在應(yīng)用內(nèi)部,把攻擊動作抽象成為一種“OGNL表達(dá)式”,大意就是透過現(xiàn)象看本質(zhì),任你千路來,我只一路去。只要是利用原理相同的攻擊手法,無論外表怎么翻新,都可以被直接識別。

          這就是 c0debreak所說的“應(yīng)用熱補(bǔ)丁”,從某種程度上說,它可以防護(hù)“未知攻擊”。

          最近三年,Struts漏洞被爆出三十多個(gè),但是針對這些漏洞的利用方法,其實(shí)都收錄在我們的25條攻擊套路之內(nèi)。根據(jù)我們的測試數(shù)據(jù),是完全可以攔截的。

          他說。

          4、安全編碼

          既然把 OpenRASP比作是“辦公室”里的管家,那么除了“抓賊”的作用以外,他一定還有幫你做好內(nèi)部安全規(guī)范的作用,比如機(jī)密文件不能隨意放置,不要把鑰匙掛在鎖上等等。。。

          在企業(yè)服務(wù)器里,這種情形同樣存在:

          數(shù)據(jù)庫查詢的時(shí)候,有哪些字符串的拼接是不能出現(xiàn)的;哪些敏感的函數(shù)是不能讓數(shù)據(jù)庫自己使用的,等等這些編碼規(guī)范問題造成的漏洞,應(yīng)該在研發(fā)階段就消滅在萌芽里。如果 OpenRASP被嵌入在應(yīng)用里,隨著系統(tǒng)開發(fā)流程,這些錯誤都能被警告和糾正。

          c0debreak說。

          另外,OpenRASP還可以輔助服務(wù)器調(diào)整安全基線,例如服務(wù)器的某些安全策略是不是被開啟,是不是存在弱密碼等等問題。

          從這幾點(diǎn)來看,OpenRASP確實(shí)很有前途。

          三、“OpenRASP”的“Open”

          其實(shí),有關(guān) RASP的理念,早在2014年就已經(jīng)被提出,并且被世界頂級咨詢公司Gartner列為應(yīng)?安全領(lǐng)域的“關(guān)鍵趨勢”。

          這就讓我想到兩個(gè)問題:

          1、為什么四年以來,RASP仍然沒能取代WAF的江湖地位?

          2、百度安全現(xiàn)在推動這種技術(shù),是否有前途呢?

          這兩個(gè)問題,還真不太好回答,不如來看三個(gè)小故事。

          1st

          CPU性能損耗20%。

          “臥槽!”c0debreak看著這樣的數(shù)據(jù),內(nèi)心其實(shí)是崩潰的。

          此刻是2017年9月,這就是OpenRASP最初版本的性能。

          其實(shí)他內(nèi)心比誰都清楚,性能本來就是 RASP技術(shù)相比傳統(tǒng)WAF的最大劣勢。畢竟在每個(gè)應(yīng)用內(nèi)部都強(qiáng)勢安插了那么多“內(nèi)線”,這些進(jìn)程人吃馬喂,哪個(gè)不向CPU要糧餉?

          一個(gè)安全進(jìn)程消耗了 CPU 20%的性能,就好比你請的管家要花掉全家五分之一的收入,不用說,連我都知道不會有人買單。(不過OpenRASP是開源項(xiàng)目,本來就不需要花錢。即使這樣,這種指標(biāo)還是意味著幫倒忙。)

          他知道,自己和團(tuán)隊(duì)掉進(jìn)了一個(gè)所有 RASP技術(shù)開發(fā)者都曾經(jīng)掉進(jìn)的坑。這樣的性能指標(biāo)拿出去,百度丟人,百度安全也丟人。更可怕的是,為了降低社區(qū)參與的門檻,團(tuán)隊(duì)采用了之前沒人在這類產(chǎn)品上使用的JavaScript(JS)語言編寫了所有的檢測邏輯。以至于連可參考的前人經(jīng)驗(yàn)教訓(xùn)都沒有。

          項(xiàng)目上線的幾個(gè)月的時(shí)間里,團(tuán)隊(duì)都在為解決這個(gè)問題發(fā)愁。走投無路的時(shí)候,他們甚至都已經(jīng)決定放棄之前的所有代碼,把編程語言換成 Lua重新開發(fā)。實(shí)際上,他們已經(jīng)著手開始做新的Demo了。

          很巧,某日一位團(tuán)隊(duì)小伙伴忽然抬起頭,用百度程序員特有的冷靜語氣對 c0debreak說:那個(gè),我好像找到了解決的辦法。。。

          他的辦法就是,用火狐最新版的 Rhino引擎替代之前的谷歌V8引擎來編寫代碼。

          就是這個(gè)從來沒有人嘗試過用的 JS+Rhino組合,把CPU的性能損耗迅速降到了1%-5%的可用水平,作為RASP產(chǎn)品中唯一開源的一個(gè),OpenRASP的性能開始超越市面上大多數(shù)的商業(yè)產(chǎn)品。這讓 c0debreak和團(tuán)隊(duì)大松一口氣。因?yàn)榫驮趲讉€(gè)月以前,項(xiàng)目還是“生死未卜”的狀態(tài)。

          2nd

          此時(shí)的 c0debreak還在焦灼地等待一個(gè)“判決”。

          一個(gè)月以前,他就把 OpenRASP的項(xiàng)目計(jì)劃書遞交領(lǐng)導(dǎo)審核了,百度安全實(shí)驗(yàn)室的負(fù)責(zé)人韋韜從技術(shù)角度很快開了綠燈,現(xiàn)在項(xiàng)目就放在百度安全總經(jīng)理馬杰的桌面上,等待他最后拍板。

          但是一個(gè)月的時(shí)間過去了,沒有音信,c0debreak慌了:“我感覺當(dāng)時(shí)這個(gè)項(xiàng)目要被砍了,覺得蠻可惜的。”

          而另一邊,馬杰面對 OpenRASP的計(jì)劃確實(shí)有些猶豫。但讓他拿不定注意的最主要原因,不是“RASP”,而是“Open”。

          久經(jīng)沙場的安全“老炮兒”馬杰非常明白,要運(yùn)營一個(gè)開源項(xiàng)目,靠的可不是頭腦一熱。

          首先,開源項(xiàng)目需要投入很大精力來宣傳和經(jīng)營,如果發(fā)出去就不管了,那么命運(yùn)肯定是死路一條,這些年輕人是否能堅(jiān)持下去是個(gè)未知數(shù)。

          其次,開源項(xiàng)目是免費(fèi)的,需要通過建設(shè)生態(tài)來實(shí)現(xiàn)效益,而 OpenRASP團(tuán)隊(duì)沒人有開源項(xiàng)目的經(jīng)驗(yàn),未來要面對的挑戰(zhàn)確實(shí)不小。

          但是,沉默寡言的 c0debreak在這件事上表現(xiàn)出少見的堅(jiān)持,他三天一個(gè)表決心,五天一個(gè)問進(jìn)度,一副赴湯蹈火永不言敗的姿態(tài)。

          縱然有所推遲,但馬杰最終給這個(gè)年輕人投出信任票;c0debreak拿到批復(fù),沒有多說一個(gè)字,火速開工。這是一個(gè)典型的屬于百度的溫情故事。

          3rd

          其實(shí)“開源”兩個(gè)字,很能代表最近兩年百度身上發(fā)生的變化。

          從開源深度學(xué)習(xí)平臺 PaddlePaddle到開源自動駕駛平臺Apollo,看上去百度要在開源這條路上越走越遠(yuǎn)了。

          OpenRASP也是這條路上的一份子。

          某種程度上說,一個(gè)開源項(xiàng)目的運(yùn)營,靠的不僅僅是核心技術(shù)團(tuán)隊(duì),而是認(rèn)同這個(gè)項(xiàng)目的社區(qū)中的每個(gè)人。

          除了技術(shù)開發(fā)本身,讓這個(gè)項(xiàng)目獲得更多的認(rèn)同,也是 c0debreak迫切要做的事情。

          他在百度內(nèi)部各個(gè)部門“奔走呼號”,先說服幾個(gè)部門灰度測試了OpenRASP系統(tǒng);幾個(gè)月來,他還在公眾平臺上不斷發(fā)布OpenRASP的技術(shù)解析文章,“以死相逼”讓身邊的技術(shù)大牛轉(zhuǎn)發(fā)宣傳;他甚至找來一些比較成功的開源項(xiàng)目,從他們的代碼提交記錄里一點(diǎn)點(diǎn)學(xué)習(xí)運(yùn)營開源項(xiàng)目的經(jīng)驗(yàn)。

          功夫不負(fù)有心人,百度安全實(shí)驗(yàn)室老大韋韜轉(zhuǎn)發(fā)的一篇文章引起了OWASP(開放式Web應(yīng)用程序安全項(xiàng)目組織)的關(guān)注,幾天后,OpenRASP的介紹出現(xiàn)在了OWASP的網(wǎng)頁上。

          也就是在這些日子,OpenRASP的技術(shù)交流QQ群不斷涌進(jìn)來很多人。c0debreak馬上帶著三個(gè)同事客串客服,忙得不亦樂乎。

          一開始人們問的都是怎么安裝怎么配置的問題,到后來,問題就變成了支持什么型號的服務(wù)器,支持什么架構(gòu)。項(xiàng)目主頁上用于點(diǎn)贊的“Star”按鈕,也開始有人點(diǎn)擊。

          OpenRASP項(xiàng)目在GitHub上的主頁

          幾個(gè)月的時(shí)間里,c0debreak和同事每天盯著Star的個(gè)數(shù)。每多一個(gè)Star,他們都感覺爽爆了。

          2018年2月4日,對他和團(tuán)隊(duì)來說是一個(gè)值得紀(jì)念的日子。這一天,OpenRASP收到了第一份“Pull Request”,也就是代碼合并請求。“社區(qū)中有人對項(xiàng)目的代碼進(jìn)行了升級,并且想合并到主代碼中,這意味著有人開始主動為社區(qū)做貢獻(xiàn)了,開源的意義真正被體現(xiàn)出來了!”他興奮地說。

          就在一個(gè)星期以后,團(tuán)隊(duì)又收到了一封來自西班牙的郵件,那位程序員用英語詢問 OpenRASP什么時(shí)候可以支持PHP語言。c0debreak滿懷激動地認(rèn)真回復(fù)了郵件,要知道,他們甚至還沒來得及把技術(shù)文檔翻譯成英文,目前只有官網(wǎng)上有一些簡單的英文Q&A。

          c0debreak覺得,這個(gè)項(xiàng)目的發(fā)展甚至超過了自己最好的預(yù)期。短短幾個(gè)月時(shí)間里,唯品會、蘇寧、攜程、科大訊飛、綠盟等等大企業(yè)都已經(jīng)開始內(nèi)部測試這套系統(tǒng),并且根據(jù)這套開源代碼定制自己需要的版本。

          和這些用戶交流,詢問他們的意見和需求,現(xiàn)在成為了 c0debreak重要的工作之一。

          他盯著屏幕上已經(jīng)累積到300多的“Star”,嚴(yán)肅地說:“看來未來幾年,我都要全心投入在這個(gè)項(xiàng)目上了。”

          在 Github頁面上,標(biāo)注了項(xiàng)目的路線圖和里程碑

          三個(gè)故事講完了。

          可能你心中的疑問被解開了,也可能你有了更多疑問。

          c0debreak和百度安全的同事們創(chuàng)造了OpenRASP,并且奮力讓它成長至今。他們想要的東西很簡單,那就是讓更多人了解OpenRASP,認(rèn)可OpenRASP,愿意為OpenRASP做點(diǎn)什么。

          打開網(wǎng)絡(luò)空間搜索引擎 Shodan,里面已經(jīng)可以查到很多第三方公司利用OpenRASP做的安全項(xiàng)目。至于他們是誰,具體怎樣使用OpenRASP,c0debreak并不了解,但他感到很幸福。“潤物細(xì)無聲”,這正是開源的魅力所在。

          在 Shodan上,搜索到“OpenRASP”的地區(qū),就會被標(biāo)為紅色,現(xiàn)在地圖上只有四個(gè)國家。我問 c0debreak未來的計(jì)劃,這個(gè)技術(shù)宅楞了一下,然后把手一揮,說:“全變成紅色。”

          我突然明白,對于開源世界來說,最好的姿態(tài)莫過于:

          心懷夢想 信馬由韁

          再自我介紹一下吧。我叫史中,是一個(gè)傾心故事的科技記者。我的日常是和各路大神聊天。如果想和我做朋友,可以關(guān)注微博:@史中方槍槍,或者搜索微信:shizhongst。不想走丟的話,你也可以關(guān)注我的自媒體公眾號“淺黑科技”。

          月26日,GOSIM Conference、IstioCon、ONE Summit Regional Day、OpenJS World、阿里云云原生開放日、Kubernetes貢獻(xiàn)者峰會等六大系列、十一場活動在上海跨國采購會展中心舉行,近百位國內(nèi)外嘉賓圍繞移動和互聯(lián)網(wǎng)、Rust語言、人工智能、汽車和機(jī)器人、游戲和元宇宙、服務(wù)網(wǎng)格、網(wǎng)絡(luò)和邊緣計(jì)算、JavaScript等開源和云原生領(lǐng)域進(jìn)行深度分享,標(biāo)志著為期三天的KubeCon + CloudNativeCon + Open Source Summit China

          日,Mybridge 對 Github 上將近 250 個(gè) JavaScript 開源項(xiàng)目進(jìn)行了排名,并從中挑選出了 Top 10,旨在幫助開發(fā)者能找到一個(gè)對自己有所啟發(fā)的有趣的項(xiàng)目。

          Top 10 的項(xiàng)目包含了日歷、驗(yàn)證、人臉識別、3D 游戲、貨幣值、熱鍵、走馬燈效果、AWE Amplify、VS 代碼主題以及 Magenta.js。

          ▌No.1:Tui.calendar 1.0 版

          Javascript 日歷,可以滿足你的所有需求。

          • Github 地址:https://github.com/nhnent/tui.calendar
          • Github star:5,455

          ▌No.2:Ow

          為人類設(shè)計(jì)的的函數(shù)參數(shù)驗(yàn)證。

          • Github 地址:https://github.com/sindresorhus/ow
          • Github star:2,078

          ▌No.3:Picojs

          用 200 行 Javascript 編寫的人臉識別庫。

          • Github 地址:https://github.com/tehnokv/picojs
          • Github star:4,014

          ▌No.4:Babylon.js

          完整的 Javascript 框架,可以通過 HTML 5 和 WebGL 創(chuàng)建 3D 游戲。

          • Github 地址:https://github.com/BabylonJS/Babylon.js
          • Github star:6,819

          ▌No.5:Dinero.js 1.0版

          該代碼庫支持 immutable 對象,用于創(chuàng)建、計(jì)算和整理貨幣值。

          • Github 地址:https://github.com/sarahdayan/dinero.js
          • Github star:1577

          ▌No.6:Hotkeys 第3版

          一個(gè)強(qiáng)大的Javascript庫,可以捕捉鍵盤的輸入,且沒有任何依賴。

          • Github 地址:https://github.com/jaywcjlove/hotkeys
          • Github star:2553

          ▌No.7:Glide 3.0

          JavaScript ES6 實(shí)現(xiàn)的幻燈片和跑馬燈效果,不包含任何依賴。優(yōu)點(diǎn)有:輕量級、靈活性好、速度快。僅為幻燈片做的設(shè)計(jì),恰到好處。

          • Github 地址:https://github.com/glidejs/glide
          • Github star:3277

          ▌No.8:AWS Amplify GraphQL客戶端

          用于云服務(wù)應(yīng)用程序開發(fā)的聲明式 JavaScript 庫。

          • Github 地址:https://github.com/aws/aws-amplify
          • Github star:3079
          • AWS Amplify GraphQL客戶端的詳細(xì)介紹:https://hackernoon.com/introducing-the-aws-amplify-graphql-client-8a1a1e514fde

          ▌No.9:Subliminal

          面向 JavaScript 的個(gè)性化簡約 VS 代碼主題。

          • Github 地址:https://github.com/gaearon/subliminal
          • Github star:490

          ▌No.10:Magenta-js

          在瀏覽器中使用機(jī)器智能生成音樂和藝術(shù)。

          • Github 地址:https://github.com/tensorflow/magenta-js
          • Github star:237
          • Magenta-js 的詳細(xì)介紹:https://magenta.tensorflow.org/js

          原文:https://medium.mybridge.co/top-10-javascript-open-source-of-the-month-v-may-2018-d6ccb4940fda

          作者:Mybridge

          譯者:彎月,責(zé)編:屠敏

          征稿啦!

          CSDN 公眾號秉持著「與千萬技術(shù)人共成長」理念,不僅以「極客頭條」、「暢言」欄目在第一時(shí)間以技術(shù)人的獨(dú)特視角描述技術(shù)人關(guān)心的行業(yè)焦點(diǎn)事件,更有「技術(shù)頭條」專欄,深度解讀行業(yè)內(nèi)的熱門技術(shù)與場景應(yīng)用,讓所有的開發(fā)者緊跟技術(shù)潮流,保持警醒的技術(shù)嗅覺,對行業(yè)趨勢、技術(shù)有更為全面的認(rèn)知。

          如果你有優(yōu)質(zhì)的文章,或是行業(yè)熱點(diǎn)事件、技術(shù)趨勢的真知灼見,或是深度的應(yīng)用實(shí)踐、場景方案等的新見解,歡迎聯(lián)系 CSDN 投稿,聯(lián)系方式:微信(guorui_1118,請備注投稿+姓名+公司職位),郵箱(guorui@csdn.net)。


          主站蜘蛛池模板: 国产内射999视频一区| 国产一区二区视频免费| 亚洲av无码一区二区三区观看| 午夜精品一区二区三区免费视频| 91在线一区二区| 欧美av色香蕉一区二区蜜桃小说| 琪琪see色原网一区二区| 国产在线精品一区二区在线观看 | 中文字幕精品一区二区| 国产乱码伦精品一区二区三区麻豆| 肥臀熟女一区二区三区| 韩国福利视频一区二区| 中文字幕亚洲乱码熟女一区二区| 精品国产一区二区三区四区 | 亚洲熟女综合色一区二区三区 | asmr国产一区在线| 蜜桃无码AV一区二区| 国产精品免费一区二区三区| 日韩在线视频一区二区三区| 无码国产伦一区二区三区视频| 全国精品一区二区在线观看| 国产精品无码一区二区三区在 | 国产激情无码一区二区三区| 午夜影院一区二区| 91秒拍国产福利一区| 国产自产在线视频一区| 国偷自产一区二区免费视频| 福利一区二区在线| 一区二区三区免费高清视频| 国产av夜夜欢一区二区三区| 国产伦精品一区二区三区无广告| 一本一道波多野结衣AV一区| 精品熟人妻一区二区三区四区不卡| 亚洲AV无一区二区三区久久| 无码少妇一区二区三区浪潮AV| 日本亚洲成高清一区二区三区| 精品乱子伦一区二区三区| 色噜噜AV亚洲色一区二区| 亚洲乱码国产一区三区| 久久国产精品无码一区二区三区| 国产乱码一区二区三区四|