程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 十一、mysql輸入安全,mysql

十一、mysql輸入安全,mysql

編輯:MySQL綜合教程

十一、mysql輸入安全,mysql


1.盡量使用“綁定參數”功能,php中可用pdo進行一系列操作
2.php可使用mysql_real_escape_string()函數進行輸入過濾;

 


怎對MySQL服務器進行安全的配置?

Chroot原因配置文件也會有所差異實際操作相似情況知道對其何正確解決文章對而言良師益友 1.關閉遠程連接 首先應該關閉3306端口MySQL默認監聽端口由於此處MySQL只服務於本地腳本需要遠程連接盡管MySQL內建安全機制嚴格監聽TCP端口仍危險MySQL程序本身有問題未授權訪問完全繞過MySQL內建安全機制關閉網絡監聽方法簡單/chroot/mysql/etc/my.cnf文件[mysqld]部分去掉#skip-networking前面# 關閉了網絡本地程序何連接MySQL數據庫呢本地程序通過mysql.sock來連接速度比網絡連接更快關於mysql.sock具體情況 MySQL備份通常使用SSH來執行 2.禁止MySQL導入本地文件 下面禁止MySQLLOAD DATA LOCAL INFILE命令命令會利用MySQL把本地文件讀數據庫用戶非法獲取敏感信息了 了禁止上述命令/chroot/mysql/etc/my.cnf文件[mysqld]部分加入下面語句:set-variable=local-infile=0 了管理方便系統MySQL管理命令mysql、mysqladmin、mysqldump等使用系統/etc/my.cnf文件要連接會尋找/tmp/mysql.sock文件來試圖連接MySQL服務器裡要連接chroot下MySQL服務器解決辦法有兩管理命令面加入--socket=/chroot/mysql/tmp/mysql.sock:#/usr/local/mysql/bin/mysql -root -p --socket=/chroot/mysql/tmp/mysql.sock 另/etc/my.cnf[client]部分加入socket=/chroot/mysql/tmp/mysql.sock第二種方法方便多了 3.修改MySQLroot用戶ID和密碼#chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld & #/usr/local/mysql/bin/mysql -uroot ....... mysql>SET PASSWORD FOR root@localhost=PASSWORD('new_password'); 要盡量養成mysql下輸入密碼習慣Shell下面輸入時候能會被其人看見mysql>use mysql; mysql>update user set user="wghgreat" where user="root"; mysql>select Host,User,Password,Select_priv,Grant_priv from user; mysql>delete from user where user=''; mysql>delete from user where password=''; mysql>delete from user where host='%'; mysql>drop database test; 修改容易猜ID:mysql>flush privileges; mysql>quit; 4.刪除歷史命令記錄 些歷史文件包括~/.bash_history、~/.mysql_history等打開會大吃些明文密碼#cat /dev/null > ~/.bash_history #cat /dev/null > ~/.mysql_history PHP和MySQL通信 默認情況下PHP會通過/tmp/mysql.sock來和MySQL通信大問題MySQL生成根本/chroot/mysql/tmp/mysql.sock解決辦法連接:#ln /chroot/mysql/tmp/mysql.sock /tmp/mysql.sock 注意:由於hard links文件系統分區之間做該處連接必須位於同分區內部

怎設置Mysql數據庫的安全

shell>chown -R mysql.mysql /usr/local/mysql/var
shell>chmod -R go-rwx /usr/local/mysql/var
改動shell>ls -l /usr/local/mysql
total 40
drwxrwxr-x 2 root root 4096 Feb 27 20:07 bin
drwxrwxr-x 3 root root 4096 Feb 27 20:07 include
drwxrwxr-x 2 root root 4096 Feb 27 20:07 info
drwxrwxr-x 3 root root 4096 Feb 27 20:07 lib
drwxrwxr-x 2 root root 4096 Feb 27 20:07 libexec
drwxrwxr-x 3 root root 4096 Feb 27 20:07 man
drwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-test
drwxrwxr-x 3 root root 4096 Feb 27 20:07 share
drwxrwxr-x 7 root root 4096 Feb 27 20:07 sql-bench
drwx------ 4 mysql mysql 4096 Feb 27 20:07 var
shell>ls -l /usr/local/mysql/var
total 8
drwx------ 2 mysql mysql 4096 Feb 27 20:08 mysql
drwx------ 2 mysql mysql 4096 Feb 27 20:08 test
shell>ls -l /usr/local/mysql/var/mysql
total 104
-rw------- 1 mysql mysql 0 Feb 27 20:08 columns_priv.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI
-rw------- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm
-rw------- 1 mysql mysql 302 Feb 27 20:08 db.MYD
-rw------- 1 mysql mysql 3072 Feb 27 20:08 db.MYI
-rw------- 1 mysql mysql 8982 Feb 27 20:08 db.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 func.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 func.MYI
-rw------- 1 mysql mysql 8641 Feb 27 20:08 func.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 host.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 host.MYI
-rw------- 1 mysql mysql 8958 Feb 27 20:08 host.frm
-rw------- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD
-rw------- 1 mysql mysql 1024 Feb 27 20:08 tables_priv.MYI
-rw------- 1 mysql mysql 8877 Feb 27 20:08 tables_priv.frm
-rw------- 1 mysql mysql 428 Feb 27 20:08 user.MYD
-rw------- 1 mysql mysql 2048 Feb 27 20:08 user.MYI
-rw------- 1 mysql mysql 9148 Feb 27 20:08 user.frm

用root用戶啟動遠程服務安全大忌服務程序出現問題遠程攻擊者極有能獲得主機完全控制權MySQL從3.23.15版本開始時作了小小改動默認安裝服務要用mysql用戶來啟動允許root用戶啟動非要用root用戶來啟動必須加上-user=root參數(./safe_mysqld -user=root &)MySQL有LOAD DATA INFILE和SELECT ... INTO OUTFILESQL語句root用戶啟動了MySQL服務器數據庫用戶擁有了root用戶寫權限過MySQL還做了些限制LOAD DATA INFILE只能讀全局文件SELECT ... INTO OUTFILE能覆蓋已經存文件

本地日志文件也能忽視包括shell日志和MySQL自己日志有些用戶本地登陸或備份數據庫時候了圖方便有時會命令行參數裡直接帶了數據庫密碼

shell>/usr/local/mysql/bin/mysqldump -uroot -ptest test>test.sql
shell>/usr/local/mysql/bin/mysql -uroot -ptest

些命令會被shell記錄歷史文件裡bash會寫入用戶目錄.bash_history文件些文件慎被讀數據庫密碼會洩漏用戶登陸數據庫執行SQL命令也會被MySQL記錄用戶目錄.mysql_history文件裡數據庫用戶用SQL語句修改了數據庫密碼也會因.mysql_history文件而洩漏我們shell登陸及備份時候-p直接加密碼提示再輸入數據庫密碼
另外文件我們也應該記錄我們操作防萬

shell>rm .bash_history .mysql_history
shell>ln -s /dev/null .bash_history
shell>ln -s /dev/null .mysql_history

上門兩條命令把文件鏈接/dev/null我們操作會被記錄文件裡了
數據庫系統由系列數據庫組成數據庫包含系列數據庫表MySQL用數據庫名數據目錄建立建立數據庫目錄各數據庫表分別數據庫表名作文件名擴展名分別MYD、MYI、frm文件放數據庫目錄

MySQL授權表給數據庫訪問提供了靈活權限控制本地用戶擁有對庫文件讀權限攻擊者只需把數據庫目錄打包拷走自己本機數據目錄下能訪問竊取數據庫MySQL所主機安全性首要問題其次數據目錄和數據文件安全性權限設置問題

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved