應對甲方的一個代碼評審,原先sql陳述句直接放在ashx或者后端里。這邊甲方的規范是不允許直接出現在代碼中,想了想放在xml或者app.config里或者存盤程序里。聽同事說存盤程序里不合適?,請教下各位都是怎么做規范的~,說明下放哪里的,取值的時候怎么取
uj5u.com熱心網友回復:
xml或者app.config也可以算是“出現在代碼中”。實際上更糟,因為更容易被替換而招致注入攻擊。sql陳述句出現在后端代碼中本事是完全正常和安全的做法,或許甲方的真正要求是分層的訪問控制。
面向公眾的網頁服務層
-----------------------
該層沒有權限直接接觸SQL,沒有權限接觸資料存盤。
該層只能訪問應用層,由應用層來提供資料庫服務,和存盤服務
內部應用層
-----------
該層從外部完全不能訪問。但可以提供服務給網頁服務層。
該層可以有SQL,資料存盤等等的權限。這層代碼里的SQL沒有問題。
uj5u.com熱心網友回復:
說是直接放后端里 sonar掃描會掃出來。。。
,放存盤程序里你覺得有什么問題沒有?
uj5u.com熱心網友回復:
你可以寫個dat檔案,然后資料再有個加密解密演算法,QQ里面的dat檔案還存用戶資訊呢uj5u.com熱心網友回復:
呼叫存盤程序 ListUsers @NameLike = 'Harry%'
和
呼叫SQL Select * from Users where Name like 'Harray%'
本質上有區別嗎?
uj5u.com熱心網友回復:
這個就是類似現在的介面,后臺處理前端發過來的資料請求,后臺讀取資料庫,加工好資料結構(一般是加為JOSN)然后再回傳給前端,前端再處理展示。uj5u.com熱心網友回復:
沒區別的,寫到XML里面嘛,他咋說你咋做就是了,沒必要弄其他的哈uj5u.com熱心網友回復:
那就聽他的不放在代碼里,放到存盤程序里。
至于放到xml,config之類的,我是極其不贊同的。
uj5u.com熱心網友回復:
放在存盤程序里,具有一定的好處,但是維護比較麻煩。優點是,很多問題,你可以直接修改存盤程序來改變邏輯,
不需要重新發布。這對大專案來說,有一定優勢(不過微服務出現后,就呵呵了。)
缺點是,維護比較麻煩,而且邏輯在sql中,實作總是沒有代碼里順暢。
而且存盤程序名稱,要有嚴格的規范。
uj5u.com熱心網友回復:
xml或者config里哪里不妥么?了解下
uj5u.com熱心網友回復:
很不安全。
uj5u.com熱心網友回復:
有啥用??騙鬼而已sqlprofile我能看到我想看到的
所以前提是計算機安全,而不是代碼安全。
既然我都能看到你的config了,我就看不到connstr?我就不能用sqlprofile看到sql??
uj5u.com熱心網友回復:
放xml里,不就是ibatis嗎,曾經很流行。放xml里也有好處有壞處。好處是靈活性,壞處我覺得是業務和代碼分離,代碼不好讀。uj5u.com熱心網友回復:
放xml里,不就是ibatis嗎,曾經很流行。放xml里也有好處有壞處。好處是靈活性,壞處我覺得是業務和代碼分離,代碼不好讀。
阿里有團隊用的就是ibatis,它的優點是靈活性,方便性能調優。
很多時候選擇技術不是單純的因為技術,而是因為組織需要選擇技術。阿里龐大的業務體量,能使得資料庫性能提升1%都是了不得的,有任何一個sql的低性能,都可能堵塞業務流程,所以每個sql必須高精度調優,就需要高級DBA這個崗位。DBA這個崗位怎么嵌入到整個開發流程而又不和后端開發攪和在一起呢(作業流程的解耦)?ibatis提供了這個方案。
uj5u.com熱心網友回復:
ibatis作為一個解決方案,有方法來避免sql注入這種問題。而對于說sql暴露,這個其實不重要,除非你服務器被人攻破了,不然沒人能盜取你的sql。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/74812.html
標籤:C#
上一篇:exe程式如何防止拷貝
下一篇:PICT,測驗工具問題。~
