a)檢查用戶提交的數據在查詢之前是否經過addslashes處理,在PHP 4.0.3以后提供了基于MySQL C API的函數mysql_escape_string()。
3)MySQL C API:
a)檢查查詢字串是否用了mysql_escape_string() API調用。
4)MySQL++:
a)檢查查詢字串是否用了escape和quote處理。
5)Perl DBI:
a)檢查查詢字串是否用了quote()方法。
6)Java JDBC:
a)檢查查詢字串是否用了PreparedStatement對象。
4、一些小竅門
1)如果不慎忘記了MySQL的root密碼,我們可以在啟動MySQL服務器時加上參數--skip-grant-tables來跳過授權表的驗證 (./safe_mysqld
--skip-grant-tables &),這樣我們就可以直接登陸MySQL服務器,然后再修改root用戶的口令,重啟MySQL就可以用新口令登陸了。
2)啟動MySQL服務器時加上--skip-show-database使一般數據庫用戶不能瀏覽其它數據庫。
3)啟動MySQL服務器時加上--chroot=path參數,讓mysqld守護進程運行在chroot環境中。這樣SQL語句LOAD DATA INFILE和SELECT ... INTO
OUTFILE就限定在chroot_path下讀寫文件了。這里有一點要注意,MySQL啟動后會建立一個mysql.sock文件,默認是在/tmp目錄下。使用了
chroot后,MySQL會在chroot_path/tmp去建立mysql.sock文件,如果沒有chroot_path/tmp目錄或啟動MySQL的用戶沒有這個目錄寫權限就不能
建立mysql.sock文件,MySQL會啟動失敗。比如我們加了--chroot=/usr/local/mysql/啟動參數,那么最好建立一個啟動MySQL的用戶能寫的
/usr/local/mysql/tmp目錄,當然我們也可以用--socket=path來指定mysql.sock文件的路徑,但這個path一定要在chroot_path里面。
4)啟動MySQL服務器時加上--log-slow-queries[=file]參數,這樣mysqld會把SQL命令執行時間超過long_query_time的寫入file文件。如果沒
有指定=file,mysqld默認會寫到數據目錄下的hostname-slow.log。如果只指定了filename,沒有指定路徑,那么mysqld也會把filename寫到
數據目錄下。我們通過這個日志文件可以找出執行時間超長的查詢語句,然后盡可能的優化它減輕MySQL服務器的負擔。
5)如果我們只需本機使用MySQL服務,那么我們還可以加上--skip-networking啟動參數使MySQL不監聽任何TCP/IP連接,增加安全性
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/