mysql 防止依賴注入

2021-10-22 19:49:31 字數 2203 閱讀 6337

string name = request.getparameter(

"name");

string query = string.

format

("select account_balance from user_data where user_name ='%s'"

,"table_a");

preparedstatement pstmt = connection.preparestatement( query )

;pstmt.setstring(

1, name)

;resultset rs = ps.executequery();

while

(rs.

next()

)

string name =

"table_a"

;string query =

"select account_balance from user_data where user_name = ? "

;preparedstatement pstmt = connection.preparestatement(query)

;pstmt.setstring(

1, name)

;resultset rs = ps.executequery();

while

(rs.

next()

)

string tablename =

"table_a"

;preparedstatement ps = datasource.getconnection(

).preparestatement(

"show full columns from ?");

ps.setstring(

1, tablename)

;resultset rs = ps.executequery(

);

jdbc 不支援以表名作為 paramter,這裡會報語法錯誤,因為生成的 sql 是 show full columns from 『table_a』』』。

同理,這些都不行,prepared statements only allow parameters to be bound for 「values」 bits of the sql statement.

參考:

create database if not exists ?

select * from ?

string idvalue =

"100"

;string sql

="select * from flink_test_dst where name like '%?%'"

;preparedstatement ps = datasource.getconnection(

).preparestatement(

sql)

;ps.setobject(

1, idvalue)

;resultset rs = ps.executequery();

while

(rs.

next()

)

這樣會導致 preparedstatement 認為沒有引數。ps.setobject(1, idvalue); 失敗。

string idvalue =

"%"+

"100"

+"%"

;string sql

="select * from flink_test_dst where name like ?"

;preparedstatement ps = datasource.getconnection(

).preparestatement(

sql)

;ps.setobject(

1, idvalue)

;resultset rs = ps.executequery();

while

(rs.

next()

)

mysql 防止注入 mysql如何防止sql注入

mysql防止sql注入的方法 1 普通使用者與系統管理員使用者的許可權要嚴格地區分開 2 強迫使用者使用引數化語句 3 盡量使用sql server資料庫自帶的安全引數 4 對使用者輸入的內容進行驗證。sql injection攻擊具有很大的危害,攻擊者可以利用它讀取 修改或者刪除資料庫內的資料,...

mysql防止SQL 注入

1 mysql real escape string 轉義 sql 語句中使用的字串中的特殊字元,並考慮到連線的當前字符集 使用方法如下 sql select count as ctr from users where username mysql real escape string userna...

php 防止mysql注入 php防止sql注入

三個函式 addslashes string 用反斜線引用字串中的特殊字元 username addslashes username mysql escape string string 用反斜槓轉義字串中的特殊字元,用於mysql query 查詢。username mysql escape st...