Lua 可以支援資料 URL 嗎?

Lua 可以支援資料 URL 嗎?

在LUA中,您可以使用Loadstrings載入HTTP請求,它可以從任何連結取得資料。

我注意到這些“加載字串”在互聯網上查找起來相當煩人,因為使用這些加載字串腳本的“roblox 黑客”社區很大。

所以很難找到...相關...信息

所以我想問這裡的人,我可以在我的lua加載字串中支援DataURL嗎?我運行一個簡單的 lua 環境,沒有插件。 (基本上,我希望能夠使用一個小的“base64 網頁”加載外部腳本,該網頁從另一個站點獲取數據,但如果在線站點出現故障,則始終有一個備份離線密鑰,因此是一個數據 URL)

答案1

雖然當然可以使用 loadstring 從外部來源運行 Lua 程式碼,但這不是很好的做法。從互聯網執行任意程式碼通常是不安全的。如果提供這些文件的伺服器被駭客攻擊,所有客戶端都將受到損害。第二個問題是,如果客戶端運行舊版本,來自伺服器的任何程式碼編碼都可能失敗,因此更新和保持同步將是一場噩夢。更好的方法是從伺服器發送純數據。您不希望伺服器知道有關客戶端的任何資訊。如果你絕對必須使用 loadstring 那麼至少確保它使用 setfenv 進行沙箱處理:

function saferload(sz, env)
  local f = pcall(loadstring, sz)
  if not f then
    return
  end
  env = env or {}
  setfenv(f, env)
  return pcall(f) or env
end

您不需要用 Base64 編碼任何內容。只需確保您的伺服器標頭正確即可。在 PHP 中,它看起來像:

header("Content-Type: text/plain");

關於您的 DataURLs 問題,請注意您也可以從伺服器取得二進位資料(在這種情況下您不需要 loadstring)。從伺服器取得檔案後,您可以將其儲存在 AppData 目錄中並在必要時更新。

相關內容