是否有漏洞与代码有关,与此无关
其中主流的连接MySQL的方式是用mysql或者mysql2包,它们只是提供了调用驱动的api。很多框架中包括egg,nest都是基于此封装的。
但这不是SQL注入的关键,它只是一种连接方式。它只管连接,不管其他的,存不存在SQL注入完全靠写代码的人本身啊。
一句脚本本没有问题(知道不让直接放sql的,也是放注入),但是你如果让SQL变成由用户输入拼接而成,那就存在SQL注入的风险。
你应该去了解SQL注入的原理,然后进行防患,百度就能找到,然后可以用ORM,一般都对输入做了处理,还能避免直接写SQL(但其实难的地方还得自己写)。
有不理解可以追问。
我知道 ie 怎么连接,别的浏览器不行。首先先去mysql官网下载个 odbc 然后安装,安装完再去控制面板找到“管理工具”--》“(ODBC)数据源”--》(如果是在自己电脑上测试就选“用户DSN”,如果想被别人访问就选“系统DSN”) 然后添加mysqlodbc,然后把驱动的名字记下来(不是你起的名字,是后面自带的名字!),准备工作做完,我们就可以通过代码访问数据库了。(注:我第一次安装ODBC,用js调用时提示我未知数据源一类的话,卸载ODBC后再次安装ODBC就正常了) 用 ie 先调用odbc驱动 然后操作mysql,话不多说,上代码!
//创建数据库连接对象
var conn = new ActiveXObject("ADODB.Connection")
//创建数据集对象
var rs = new ActiveXObject("ADODB.Recordset")
try{
//MySQL ODBC 5.3 ANSI Driver这个就是我刚才说让你记得驱动的名字
var connectionstring = "Driver={MySQL ODBC 5.3 ANSI Driver}Server=127.0.0.1User=rootPassword=rootDatabase=mysqlOption=3Port=3306"
console.log(connectionstring)
//打开连接
conn.open(connectionstring)
//查询语句
var sql = " select * from table1 "
//打开数据集(即执行查询语句)
rs.open(sql,conn)
//(或者rs=conn.execute(sql))
//遍历所有记录
while(!rs.eof){
//WScript是Windows 的脚本宿主对象,详细情况请在windows帮助里查找。
//WScript.Echo输出记录的内容
document.write(rs.Fields("id") + "\t" + rs.Fields("name") + "\n")
//下一条记录
rs.moveNext()
}
//关闭记录集
rs.close()
//关闭数据库连接
conn.close()
} catch(e){
//异常报告
document.write(e.message)
} finally{
//
}