回覆列表
  • 1 # 使用者1118065681947

    其實是預編譯功能,用preparedstatement就會把sql的結構給資料庫預編譯。

    SQL注入 攻 擊 是利用是指利用 設計 上的漏洞,在目 標 服 務 器上執行 Sql語 句以及 進 行其他方式的 攻 擊 ,

    動態 生成 Sql語 句 時 沒有 對 用 戶輸 入的資料 進 行 驗證 是 Sql注入 攻 擊 得逞的主要原因。

    對 於 JDBC而言, SQL注入 攻 擊 只 對 Statement有效, 對 PreparedStatement 是無效的, 這 是因 為 PreparedStatement 不允 許 在不同的插入 時間 改 變查詢 的 邏輯結 構。

    如 驗證 用 戶 是否存在的 SQL語 句 為 :

    select count(*) from usertable where name="用 戶 名 " and pswd="密 碼 "

    如果在 用 戶 名欄位 中 輸 入 " or "1"="1" or "1"="1

    或是在 密 碼 欄位 中 輸 入 1" or "1"="1

    將 繞過驗證 ,但 這種 手段只 對 只 對 Statement有效, 對 PreparedStatement 無效。

    PreparedStatement 相 對 Statement有以下 優 點:

    1.防注入攻擊

    2.多次執行速度快

    3.防止資料庫緩衝區溢位

    4.代 碼 的可讀性可維護性好

  • 中秋節和大豐收的關聯?
  • 緋聞女孩女主角資料?