2014-04-09 23 views
-1

字符串getDBUSERByUserIdSql = 「{調用getDBUSERByUserId(,,,????)}」;爲XSS攻擊防範我用準備好的語句或可調用語句

try { 
     dbConnection = getDBConnection(); 
     callableStatement = dbConnection.prepareCall(getDBUSERByUserIdSql); 

     callableStatement.setInt(1, 10); 
     callableStatement.registerOutParameter(2, java.sql.Types.VARCHAR); 
     callableStatement.registerOutParameter(3, java.sql.Types.VARCHAR); 
     callableStatement.registerOutParameter(4, java.sql.Types.DATE); 

     // execute getDBUSERByUserId store procedure 
     callableStatement.executeUpdate(); 

準備好的發言

+0

XSS與SQL注入無關;它需要一個完全不同的方法,而不是由數據庫或其驅動程序提供。 –

回答

1

首先你需要了解PreparedStatement和CallableStatement中,

之間的差異

的PreparedStatement當您計劃多次使用SQL語句時使用。 PreparedStatement接口在運行時接受輸入參數。

CallableStatement當您想要訪問數據庫存儲過程時使用。 CallableStatement接口也可以接受運行時輸入參數。

,避免**XSS**你可以喜歡preparedStatement時大衛說。參考here

希望這有助於!

+0

仍然XSS是錯誤的術語 - 跨站點scritping通常指的是在瀏覽器中的攻擊。你想要防止的是SQL注入 - 通過使用綁定變量可以完全避免100%! – Falco