我正在研究Web地圖服務,並希望爲我的用戶提供一個可用於創建自定義插件的Python API。這些插件將在我的服務器上運行,所以我試圖儘可能鎖定Python。在Python中使用私有元素的公共API
爲了確保用戶無法訪問他們不應該訪問的文件,我計劃在PyPy沙盒解釋器中運行插件。
我試圖克服的最後一個大障礙是如何克服API本身。我有一個數據庫API,允許用戶對數據庫進行受控查詢。例如,我有一個select(column,condition)
函數,它允許用戶從數據庫中檢索項目,但它們將被限制在一個表格中。然後,有一個私人函數_query(sql)
需要原始的SQL命令,並在服務器上執行它們
問題是,Python(至少據我所知)沒有提供防止用戶直接調用查詢函數和nuking我的方法數據庫。爲了防止這種情況,我想打破我的API分爲兩個部分:
------------- pipe -------------- ------------ | publicAPI | -------> | privateAPI | ---> | database | ------------- -------------- ------------
所以publicAPI將基本上是一個代理API通過管道的主要API通信。 publicAPI只包含公共API函數的代理,用戶將無法獲得私有元素(如_query(sql)
)。
您認爲這是一個可行的解決方案嗎?忽略更簡單的解決方案,我是否爲自己做了太多工作?
非常感謝您的幫助!