本文目录一览:
- 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(); 来获取数据 这样可以很有效的避免被注入