造成sql注入的原因是因為程式沒有有效過濾使用者的輸入,使攻擊者成功的向伺服器提交惡意的sql查詢**,程式在接收後錯誤的將攻擊者的輸入作為查詢語句的一部分執行,導致原始的查詢邏輯被改變,額外的執行了攻擊者精心構造的惡意**。
1.嚴格限制web應用的資料庫的操作許可權,給此使用者提供僅僅能夠滿足其工作的最低許可權,從而最大限度的減少注入攻擊對資料庫的危害
2.檢查輸入的資料是否具有所期望的資料格式,嚴格限制變數的型別
3.在應用發布之前建議使用專業的sql注入檢測工具進行檢測,以及時修補被發現的sql注入漏洞。
4.preparedstatement 採用預編譯語句集,它內建了處理sql注入的能力,只要使用它的set***方法傳值即可。
原理:
sql注入只對sql語句的準備(編譯)過程有破壞作用
而preparedstatement已經準備好了,執行階段只是把輸入串作為資料處理,
而不再對sql語句進行解析,準備,因此也就避免了sql注入問題.
(1)資料量較小時:需要從客戶端傳遞pagenumber(頁碼)、pagesize(每頁條數)兩個引數使用mysql中的limit查詢
例如:
收到客戶端(2)在資料量較小的時候簡單的使用select * from table limit (pageno-1)*pagesize, pagesize;
limit
進行資料分頁在效能上面不會有明顯的緩慢,但是資料量達到了萬級到百萬級sql語句的效能將會影響資料的返回。這時需要利用主鍵或者唯一索引進行資料分頁;
例如:
假設主鍵或者唯一索引為 id(詳細見收到客戶端
select * from table where id > (pageno-1)*pagesize limit pagesize;
–返回id為40到50之間的資料
相同點:
不同點:
cat 由第一行開始顯示內容,並將所有內容輸出 (cat [-n] 檔名 (-n : 顯示時,連行號一起輸出))
tac 從最後一行倒序顯示內容,並將所有內容輸出 (tac 檔名)
more 根據視窗大小,一頁一頁的現實檔案內容 (more 檔名)常用
less 和more類似,但其優點可以往前翻頁,而且進行可以搜尋字元 (less 檔名)常用
head 只顯示頭幾行 (head [n number] 檔名 (number 顯示行數))
tail 只顯示最後幾行 (tail [-n number] 檔名)
nl 類似於cat -n,顯示時輸出行號 (nl 檔名)
如果在vi條件下:在命令模式下敲斜桿( / )這時在狀態列(也就是螢幕左下腳)就出現了 「/」 然後輸入你要查詢的關鍵字敲回車就可以了。
如果是在沒有開啟檔案的前提就用"cat 檔名 | grep "關鍵字""
1.netstat -anp |grep 埠號
如下,我以3306為例,netstat -anp |grep 3306(此處備註下,我是以普通使用者操作,故加上了sudo,如果是以root使用者操作,不用加sudo即可檢視),如下圖1:
2.netstat -nultp(此處不用加埠號) 該命令是檢視當前所有已經使用的埠情況
3.netstat -anp |grep 82檢視82埠的使用情況
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...
知識點整理
一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...
知識點整理
一 狀態控制碼 code,control flag 標誌位欄位 u a p r s f 佔6位元。各 位元的含義如下 ack 確認位元 acknowledge 只有當ack 1時確認號字段才有效,代表這個封包為確認封包。當ack 0時,確認號無效。psh push function 若為1時,代表要...