在搜尋框中輸入娛樂新聞')deletecategory where id=3--出現了如下所示狀況。
可以看到,資料庫中增加了乙個娛樂新聞,但是同時id=3的那條記錄從資料庫中消失了,這是為什麼呢?
看一下插入語句是怎麼寫的,
insertinto category(name) values('nfdsa'),剛才在搜尋框中輸入的那些相當於兩個單引號中的內容,把輸入的內容放入這條插入語句中,結果變成了
insert into category(name) values('
娛樂新聞
')delete category where id=3--'),因為使用的是拼接字串,相當於寫了兩天完整的sql語句,分別是insert into category(name) values('
娛樂新聞
')和delete category where id=3,兩個--相當於注釋,注釋後面的內容是忽略的。
因為sql語句是通過拼接字串實現的,那麼就可以在拼接字串裡面做手腳。上面的那個例子就是人為的把拼接字串補全,然後再刪除一條記錄。
那如何知道表的名字是category呢?方法很多。比如:
先猜表名
and (select count(*) from 表名)<>0
猜列名and (select count(列名) from 表名)<>0
或者也可以這樣
and exists (select * from 表名)
and exists (select 列名 from 表名)
返回正確的,那麼寫的表名或列名就是正確
當然,還有很多的方法。
那麼如何避免sql注入呢,插入的時候不要直接使用構造的sql語句了。通過sql引數的方法可以在一定程度上避免這一問題。
淺入淺出SQL注入
已經開始了學習牛腩新聞發布系統,在講後台 的時候講了一些重構sqlhelper 的知識,儲存過程和觸發器等,這些以前都是接觸過的。而 sql 注入是以前沒有注意過的,所以停下來總結學習一下 sql 注入。首先什麼是 sql 注入呢?實戰篇 sql 注入概念 所謂sql注入,就是通過把sql命令插入到...
XGBoost淺入淺出
xgboost風靡kaggle 天池 datacastle kesci等國內外資料競賽平台,是比賽奪冠的必備大殺器。我在之前參加過的一些比賽中,著實領略了其威力,也取得不少好成績。如果把資料競賽比作金庸筆下的武林,那麼xgboost可謂屠龍刀,號令天下,莫敢不從!倚天不出,誰與爭鋒?xgboost工...
XGBoost淺入淺出
xgboost風靡kaggle 天池 datacastle kesci等國內外資料競賽平台,是比賽奪冠的必備大殺器。我在之前參加過的一些比賽中,著實領略了其威力,也取得不少好成績。如果把資料競賽比作金庸筆下的武林,那麼xgboost可謂屠龍刀,號令天下,莫敢不從!倚天不出,誰與爭鋒?xgboost工...