批量in查詢中可能會導致的sql注入問題

2021-06-26 00:11:41 字數 1258 閱讀 2507

有時間我們在使用in或者or進行查詢時,為了加快速度,可能會經常這樣來使用sql之間的拼接,然後直接匯入到乙個in中,這種查詢實際上效能上還是可以的,

例如如下:

update keyword set stats=? where taskid in ('"+collutil.tostring(list, "','")+"') "

實際上面對這些問題,我們最好不要通過自己排除的方式來,因為很可能出現我們意想不到的情況出現,所以我們在進行無論查詢或者更改插入之類的操作時,最好使用問號表示式,這樣能夠防注入。

但是如果有些特殊情況下,我們的系統使我們內部使用,我們也可以是適當的使用in或者or查詢,但是我們在in()這個括號裡面要注意數量問題,這個問題因不同的版本in中包含的量估計都是不一樣的。我們最好可以通過一些演算法來控制這個量,最好是自己做一下壓力測試,看看到底你的in中能夠包含多大的資料量,當然我曾經做過壓力測試,in裡面可以包含16w多,當時我是包含了64個字長的英語字母和漢字,在進行操作時,可能會因為欄位的長度不同,速度肯定都會不同。

int size = ids.size();

int loopnum = (size%1000==0)?(size/1000):(size/1000 + 1);

if(size==0)

for(int cp=1;cp<=loopnum;cp++)

// 分批進行任務獲取

listlist = ids.sublist(beginrecord, endrecord);

當然我這只是乙個分組演算法的例項,我們平常在使用這種效能不是太好的查詢是也要注意分組進行,如果不這樣,mysql可能會報一些packet過大的異常或者請檢查你的版本異常,如果你發現你的sql語句沒有問題,這時你就該應該注意到這個問題了。

還有一點,我們在乙個函式中進行寫sql語句時,如果一條sql能夠搞定,我們也盡量不要使用第二條,因為資料庫的開啟與關閉是非常耗時的操作,所以我們在使用程式語言進行寫程式時,要盡量使用我們工具類中給我們提供的一些類,例如:

stringbuffer buffer = new stringbuffer();  

paramslist.add(stats);

if(stats==stats.pend.getcode())

這樣如果在滿足2條sql語句的情況下,實際上1條sql就直接搞定了。這樣還能夠增加**執行的速度。特別是資料量特別大的情況下,更要減少乙個函式中的sql語句,盡量使用拼接,減少資料庫的開啟與關閉。

Kindeditor特定情況可能會導致全盤瀏覽

因為例子很少,開始想了下不是他們的漏洞,後面想了下,後面沒有檢查好使用者的正常配置內容導致,還是提下吧。貌似是最新版本的。測試語言 php 測試漏洞檔案 kindeditor php file manager json.php 預設配置 第16行 root path php path attache...

安裝Qt可能會遇到的問題

問題一 1.剛安裝完成之後,第一次開啟彈出介面 libhelp.so 無法載入庫 解決方法 在終端依次輸入 sudo apt get install libqt4 dev sudo apt get f install sudo apt get install libgstreamer0.10 dev...

CSS面試可能會問到的問題

更多flex布局參考 更多的相容參考鏈結 當乙個元素的visibility屬性被設定成collapse值後,對於一般的元素,它的表現跟hidden是一樣的。自動變成display block,因此,可以直接設定浮動元素的寬高 通過 查詢可以為不同大小和尺寸的 定義不同的css,適應相應的裝置的顯示。...