2017-06-06 21 views
0

是否已建立用於向Web客戶端提供數據庫行的方法或框架?到目前爲止,我只是讓他們提交一個JSON對象前爲網站提供服務數據庫結果的已建立方法

{ 
    Query: "SELECT", 
    Schema: "icecream", 
    Table: "cones", 
    Fields: ["price", "flavor"], 
    Filters: [ 
    { 
     "Comparison": "=", 
     "Field": "flavor", 
     "Value": "chocolate" 
    } 
    ] 
} 

我驗證提到的授權/正確字段,然後構建一個事先準備好的聲明MySQL的字符串,但是否有任何框架,或實施本標準方法?

+0

php via ajax ??? – clearshot66

回答

-1

它看起來像你重塑查詢語言!

爲什麼不允許用戶直接鍵入SQL查詢?或者mongodb查詢,或者你使用的任何DBMS。開銷少得多。

說到安全性,一個好的做法是設置數據庫的副本(只讀副本),讓客戶端訪問只讀副本而不是主數據庫節點。

您的主節點和只讀副本可以使用複製保持同步。任何良好的DBMS都支持它。

這方面的一個很好的例子是Stack Exchange Data Explorer

0

說實話,你在做什麼是非常不尋常的。您正在有效地爲您的Web客戶端提供完全訪問權限,爲您的數據庫構建查詢您提到您在構建查詢之前驗證信息,這很好,因爲SQL注入的風險非常高。您提出了一個非常寬泛的問題,因此我將回答一個同樣廣泛的答案:

不,沒有框架或標準來執行此操作。原因是因爲(除非你有一個非常具體的原因),很少有Web應用程序被設置爲使Web客戶端能夠對正在構建的查詢進行廣泛的控制。通常你的後端API會故意更有限。你正在有效地實現一個API方法:

  1. 給我你的查詢的詳細信息,我會爲你構建並執行它並返回結果。

正常情況下,標準操作程序是要有更多特定和有限的API方法。而不是一個通用的查詢生成器,你就必須爲有發生的每一個具體的事情的API:

  1. 告訴我你想要多少記錄和字段的這種極少數的搜索價值,我會返回一個列表匹配用戶的
  2. 告訴我你想要多少條記錄,並要排序這些領域,我將返回匹配的書

列表這並不是說,有沒有完全有效的理由是你試圖做到這一點,但除非你有特別想讓用戶完全控制曲線的理由我認爲第一步是以一種讓Web客戶端更少控制的方式進行重構,而您的服務器端應用程序則更加重要。

相關問題