本文目錄一覽:
- 1、Java中Mysql注入問題
- 2、什麼是mysql注入
- 3、如何在linux下安裝mysql資料庫並配置
- 4、linux伺服器mysql資料庫怎麼配置
- 5、asp注入 mysql資料庫注入
- 6、mysql注入不用and怎麼注入
Java中Mysql注入問題
通過?來代替參數,使用perparstatment對象,設置值,就可以達到預編譯效果防止注入問題
什麼是mysql注入
所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令。
我們永遠不要信任用戶的輸入,我們必須認定用戶輸入的數據都是不安全的,我們都需要對用戶輸入的數據進行過濾處理。
以下實例中,輸入的用戶名必須為字母、數字及下劃線的組合,且用戶名長度為 8 到 20 個字元之間:
if (preg_match(“/^\w{8,20}$/”, $_GET[‘username’], $matches)){
$result = mysqli_query($conn, “SELECT * FROM users
WHERE username=$matches[0]”);}
else {
echo “username 輸入異常”;}
讓我們看下在沒有過濾特殊字元時,出現的SQL情況:
// 設定$name 中插入了我們不需要的SQL語句$name = “Qadir’; DELETE FROM users;”;
mysqli_query($conn, “SELECT * FROM users WHERE name='{$name}'”);
以上的注入語句中,我們沒有對 $name 的變數進行過濾,$name 中插入了我們不需要的SQL語句,將刪除 users 表中的所有數據。
在PHP中的 mysqli_query() 是不允許執行多個 SQL 語句的,但是在 SQLite 和 PostgreSQL 是可以同時執行多條SQL語句的,所以我們對這些用戶的數據需要進行嚴格的驗證。
防止SQL注入,我們需要注意以下幾個要點:
1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,可以通過正則表達式,或限制長度;對單引號和 雙”-“進行轉換等。
2.永遠不要使用動態拼裝sql,可以使用參數化的sql或者直接使用存儲過程進行數據查詢存取。
3.永遠不要使用管理員許可權的資料庫連接,為每個應用使用單獨的許可權有限的資料庫連接。
4.不要把機密信息直接存放,加密或者hash掉密碼和敏感的信息。
5.應用的異常信息應該給出儘可能少的提示,最好使用自定義的錯誤信息對原始錯誤信息進行包裝
6.sql注入的檢測方法一般採取輔助軟體或網站平台來檢測,軟體一般採用sql注入檢測工具jsky,網站平台就有億思網站安全平台檢測工具。MDCSOFT SCAN等。採用MDCSOFT-IPS可以有效的防禦SQL注入,XSS攻擊等。
如何在linux下安裝mysql資料庫並配置
Linux下MySQL安裝配置 MySQL配置參數詳解
一、下載編譯安裝
#cd /usr/local/src/
#wget
#tar –xzvf mysql-5.1.38.tar.gz ../software/
#./configure
–prefix=/usr/local/mysql //MySQL安裝目錄
–datadir=/mydata //資料庫存放目錄
–with-charset=utf8 //使用UTF8格式
–with-extra-charsets=complex //安裝所有的擴展字符集
–enable-thread-safe-client //啟用客戶端安全線程
–with-big-tables //啟用大表
–with-ssl //使用SSL加密
–with-embedded-server //編譯成embedded MySQL library (libmysqld.a),
–enable-local-infile //允許從本地導入數據
–enable-assembler //彙編x86的普通操作符,可以提高性能
–with-plugins=innobase //資料庫插件
–with-plugins=partition //分表功能,將一個大表分割成多個小表
#make make install //編譯然後安裝
二、新建用戶和組
#groupadd mysql //建MySQL組
#useradd -g mysql -s /sbin/nologin mysql //建MySQL用戶屬於MySQL組
三、配置
#chown -R mysql:mysql /usr/local/mysql/ 把MySQL目錄的許可權給MySQL用戶和組
#cp /usr/local/src/software/ mysql-5.1.38/support-files/my-medium.cnf /etc/my.cnf //拷入配置文件my.cnf
#/usr/local/mysql/bin/mysql_install_db –user=mysql //用MySQL來初始化資料庫
#chown -R mysql:mysql /usr/local/mysql/var/ //把初始化的資料庫目錄給MySQL所有者
#/usr/local/mysql/bin/mysqld_safe –user=mysql //啟動MySQL
四、其他
#cp /usr/local/src/software/ mysql-5.1.38/support-files/mysql.server /etc/init.d/mysqld
#chmod 755 /etc/init.d/mysqld
#chkconfig –add mysqld
#chkconfig mysqld on
#service mysqld restart
五、登陸測試
#cd /usr/local/mysql/bin
#mysql
show databases;
#
MySQL安裝結束
linux下mysql配置方法
在linux中mysql的配置文件路徑在/usr/share/mysql下
有:my-huge.cnf 、my-large.cnf、 my-medium、my-small.cnf這些文件
根據需要打開這些文件中的一個:
在文件中找到[mysqld]
在下這行下加入datadir=FILEPATH /*這個路徑為資料庫存放的路徑*/
然後保存文件
在shell中輸入
#cp my-***.cnf /etc
#cd /etc
#mv my.cnf my.cnf.bak /*把系統以前的mysql配置文件備份*/
#mv my-***.cnf my.cnf
#service mysqld start /*啟動mysql服務*/
#ntsysv /*配置mysql自啟動,在彈出的窗口中把mysqld這項服務用空格選中,最後確定保存*/
linux伺服器mysql資料庫怎麼配置
linux伺服器mysql資料庫配置
mysql最流行的關係型資料庫之一,目前隸屬於oracle公司,因體積小、速度快、總體擁有成本低,開放源代碼這一特點,所以是我們日常開發的首選。
工具/原料
mysql5.6
cnetos
方法/步驟
查找以前是否安裝有mysql,使用下面命令:
rpm -qa|grep -i mysql
如果顯示有如下包則說明已安裝mysql
mysql-4.1.12-3.RHEL4.1
mysqlclient10-3.23.58-4.RHEL4.1
如果已安裝,則需要刪除已安裝的資料庫,使用以下命令來刪除資料庫
刪除命令:rpm -e –nodeps 包名
( rpm -ev mysql-4.1.12-3.RHEL4.1 )
刪除老版本mysql的開發頭文件和庫
命令:rm -fr /usr/lib/mysql
rm -fr /usr/include/mysql
注意:卸載後/var/lib/mysql中的數據及/etc/my.cnf不會刪除,如果確定沒用後就手工刪除
rm -f /etc/my.cnf
rm -fr /var/lib/mysql
下載mysql的rpm包
可以通過wget下載具體的地址因為不能用鏈接請大家去官網去找
(1)MySQL-server-5.6.10-1.rhel5.x86_64.rpm:MySQL伺服器;
(2)MySQL-client-5.6.10-1.rhel5.x86_64.rpm:MySQL客戶端;
(3)MySQL-devel-5.6.10-1.rhel5.x86_64.rpm:Mysql開發依賴包。
下載後放到Liunx伺服器中,如圖所示
安裝MySQL Server的rpm包
rpm -ivh MySQL-server-5.6.21-1.linux_glibc2.5.x86_64.rpm
安裝過程如圖所示
安裝完成後會生成root用戶的隨機密碼,請使用「cat /root/.mysql_secret」或類似命令進行查看。
安裝MySQL客戶端
rpm -ivh MySQL-client-5.6.21-1.linux_glibc2.5.x86_64.rpm
安裝MySQL開發依賴包
rpm -ivh MySQL-devel-5.6.21-1.linux_glibc2.5.x86_64.rpm
啟動msyql
安裝完成後mysql是沒有啟動的,運行mysql命令會提示如下錯誤:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
可使用如下命令啟動MySQL:
service mysql start
或者使用如下命令:
/etc/init.d/mysql start
可使用SET PASSWORD命令修改root用戶的密碼,參考如下:SET PASSWORD = PASSWORD(‘root123456’);
asp注入 mysql資料庫注入
select也可以在access、sqlserver中使用啊,asp、psp、.net語句中也可以寫select查詢語句
在php與asp只是用的語言不一樣,例如同樣是從資料庫中讀取數據寫法就不同。
以下是php從access資料庫中讀取:
?
$sql = “SELECT * FROM [es_pcls1] ORDER BY [p1no] ASC”;
$rs = myselect($sql,1);
while(!$rs-eof) {
?li class=”linksmall”a href=”linkcontent.php?p1id=?=$rs-Fields(“p1id”)-value?” class=”link3″?=gbk2utf($rs-Fields(“p1name1”)-value)?/a/li?
$rs-MoveNext();
}
closers();
?
以下是asp從mysql資料庫中讀取:
%
sql = “SELECT * FROM [es_pcls1] ORDER BY [p1no] ASC” ‘根據plno序號 查詢表es_pcls1的信息
Call AdoSELECT(sql,1) ‘Request.QueryString 是指取得所有以GET方式提交到這個頁面的參數組合
‘While……Wend 只要指定的條件成立,為true, 則會重複執行一系列的語句
While not rs.eof
%lia href=”products.asp?p1id=%=rs(“p1id”)%”%=rs(“p1name1”)%/a/li%
rs.movenext ‘讀取一條記錄後移動指針,繼續讀取下一條指針
Wend
AdoCLOSE ‘關閉資料庫
%
mysql注入不用and怎麼注入
mysql 可以使用更安全的pdo_mysql介面來處理 所有的查詢參數話綁定 $sql = ‘select * from table where id=:id’; $pdo-prepare($sql)-bindValue(‘:id’, $id, PDO::PARAM_INT)-excute(); $pdo-fetch(); 來獲取數據 這樣可以很有效的避免被注入
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/270091.html