日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL--SQL中的安全问题

發布時間:2023/12/13 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL--SQL中的安全问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

---恢復內容開始---

1) SQL 注入簡介

  SQL 注入(SQL Injection) 就是利用某些數據庫的外部接口將用戶數據插入到實際的數據庫操作語言(SQL)當中,從而達到入侵數據庫乃至操作系統的目的。他的產生主要是由程序對用戶輸入的數據沒有進行嚴格的過濾,導致非法數據庫查詢語句的執行。

?

2) 應用開發中可以采取的應對措施

  • PrepareStatement + Bind-Variable

    MySQL 服務器端并不存在共享池概念,所以在 MySQL 上使用綁定變量(Bind Variable)最大的好處主要是為了避免 SQL 注入,增加安全性。

    同樣,使用注釋 /* 或 # 讓后續條件失效也可以防范。

    需要注意,PrepareStatement 語句是由 JDBC 驅動來支持的,在使用 PrepareStatement 語句的時候,僅僅做了簡單的替換和轉義,并不是 MySQL 提供了 PrepareStatement 的特性。對 Java、JSP 開發的應用,可以使用?PrepareStatement + Bind-Variable 來防止 SQL 注入,另外從 PHP 5開始,也在擴展的 MySQLI 中支持 PrepareStatement,所以在使用這類語言作數據庫開發時,強烈建議使用 PrepareStatement + Bind-variable 來實現。

  • 使用應用程序提供的轉換函數

    很多應用程序接口都提供了對特殊字符進行轉換的函數,恰當的使用這些函數,可以防止應用程序用戶輸入使應用程序生成不期望的語句。

      MySQL C API: 使用 mysql_real_escape_string() API 調用

      MySQL++: 使用 escape 和 quote 修飾符

      PHP: 使用 mysql_real_escape_string() 函數(適用于 PHP 4.3.0版本)。從 PHP 5開始,可以使用擴展的 MySQLI,這是對 MySQL 新特性的一個擴展支持,其中的一個優點就是支持 PrepareStatement

      Perl DBI: 使用 placeholders 或者 quote() 方法

      Ruby DBI: 使用 placeholders 或者 quote() 方法

  • 自己定義函數進行校驗

    如果現有的轉換函數仍然不能滿足要求,則需要自己編寫函數進行輸入校驗。輸入驗證是一個很復雜的問題。輸入驗證的途徑可以分為以下幾種:

        整理數據使之變得有效

        拒絕已知的非法輸入

        只接受已知的合法輸入

    因此,如果想要獲得最好的安全狀態,目前最好的解決辦法就是,對用戶提交或者可能改變的數據進行簡單分類,分別應用正則表達式來對用戶提供的輸入數據進行嚴格的檢測和驗證。

?

轉載于:https://www.cnblogs.com/microcat/p/6672987.html

總結

以上是生活随笔為你收集整理的MySQL--SQL中的安全问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。