簡體   English   中英

盡管使用了准備好的語句,但仍會進行盲SQL注入

[英]Blind Sql injection despite using prepared statement

最近,我們對應用程序進行了安全掃描,發現很少的盲注SQL問題。 但是我發現即使使用了准備好的語句,我們也遇到了這個問題。

僅使用准備好的語句不能解決綁定SQL注入問題嗎? 在准備好的語句中使用字符串連接會損害所有優勢嗎?

private static final String selectStaement=" select email,phone from tuser where name=? ";
public void execute(String name) throws SQLException {
    PreparedStatement preparedStatement = theConnection.prepareStatement(selectStaement + " ORDER by name");

    preparedStatement.setString(1, name);
    rs = preparedStatement.executeQuery();

}

有人可以讓我知道這段代碼有什么問題以及如何解決嗎? 數據驗證是唯一的方法嗎? 如果我要允許所有字符怎么辦?

從安全的角度來看,您的代碼很好,這是掃描儀報告的錯誤警報(無論是哪種警報)。

您可能應該將掃描儀配置為忽略此類警告。

“如果您不使用用戶輸入作為已准備好的語句的參數,而是通過將字符串連接在一起來構建SQL命令,那么即使使用已准備好的語句,您仍然容易受到SQL注入的攻擊。”

請參閱: PreparedStatement如何避免或阻止SQL注入?

為什么不使用:

private static final String selectStaement=" select email,phone from tuser where name=? ORDER by name";

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM