我想定義一種“簡單 JS”語言,它是 JS 功能的一個子集。然后我想分析一個小的 JS 檔案并評估它是否堅持只使用 Simple JS 功能。該子集將非常有限,并且是功能的“允許串列”而不是“阻止串列”。
更具體地說,我想檢查 JS 檔案是否僅使用“vanilla”/“basic”功能,例如:
- 設定/修改變數
- 功能
不在 Simple JS 子集中的“高級”JS 功能示例包括:
- 異步/等待
- 評估
- 聯網
我將如何實作這樣一個簡單的 JS 分析器?
uj5u.com熱心網友回復:
這是有很多警告的事情之一,而且很難安全地做到這一點。estree如果 Simple JS 只是一個有趣的專案,那么您可以通過使用上述庫生成 AST 來了解編譯器的作業原理。然后,您只需遍歷 AST 并驗證每個節點是否在“允許”串列中,或者至少不在“拒絕”串列中。
如果這將使用不受信任的用戶腳本并在完整的 JS 解釋器中運行它們,請意識到您絕對不會安全地執行此操作。生成 AST 是靜態分析,但是如果代碼在運行時可以找到任何隱蔽的方式來修改自身(以 eval 為例,但有很多方法),那么它將完全可以訪問完整的 JS 語言。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/525826.html
標籤:javascript解析
