最近有個需求,因為實施部接觸不到服務器的資料庫,所以我打算在程式做個簡單的頁面,一個textarea文本輸入SQL陳述句,然后點查詢,將查出來的結果分頁動態展示到串列里面。現在的問題是如果是一個非常長的SQL陳述句,頁面提示不能穿非法字符,目前的解決思路是打算前端對sql加密成固定長度的合法字串,然后.net后臺解密,試了幾個加密演算法,加密的字串都比較長,有沒有大佬知道這個問題咋處理的,非常感謝
uj5u.com熱心網友回復:
把具體的業務 api 開發給他們,而不是給他們隨便“增刪改查”這類東西。uj5u.com熱心網友回復:
接受用戶輸入的sql,還是需要處理下里面的特殊字符,以及限制用戶輸入的sql型別(如屏蔽insert delete update)。從安全的角度,還是按照樓上大佬的意見,開發指定的API給人家。uj5u.com熱心網友回復:
這需求活久見
uj5u.com熱心網友回復:
+1
客戶端sql陳述句缺點很多:
1、容易造成sql注入攻擊。
2、泄露內部實作細節(會給其他惡意攻擊提供額外資訊)。
解決方法就是限制客戶只能通過API來獲取資料。
如果你要實作一定程度上的豐富查詢,或想使用行業標準,還可以閱讀和參考
* OData (微軟牽頭的Open Data公開查詢協議,dotnet的支持很好)
* GraphQL (facebook,spotify正在用的資料查詢語言)
* 其他諸如ORDS(Oracle REST Data Services)等等...
uj5u.com熱心網友回復:
的確,樓上已經討論過 直接使用 sql 不合理的地方了。這里就不贅述了。
另外 OData的確是個比較符合的方案了。
uj5u.com熱心網友回復:
這是介面解決的事.傳SQL小心被drOp del洗掉資料庫
uj5u.com熱心網友回復:
base64加密或URL加密方式,轉送到后臺再解密還原SQL就可以。 小型監控攝像頭uj5u.com熱心網友回復:
js加密資料?不管你怎么加密,都沒有用,js 對于任何用戶說,都是開源的,你什么演算法,源代碼赤裸裸地暴露在用戶面前,任何加密都沒有安全性可言,哪怕你對源代碼作混淆加密(源代碼加密),都是沒有用的,瀏覽器只能識別正常的js代碼,一個f12,什么都看見了,無非就是增加別人閱讀難度。做web程式,應該有個概念,就是任何從客戶端提交的資料都是不可信任的,不可靠的,后端必須作資料上,業務上的校驗轉載請註明出處,本文鏈接:https://www.uj5u.com/net/29697.html
標籤:ASP.NET
下一篇:請教C#計時器和銷毀圖片
