数据库编程源码分析
学号:2020212542 班级:2020211804 姓名:徐嘉骏
环境:SQL SERVER 2008,window10系统
一、搭建环境运行JAVA学生选课管理系统
问题:附加数据库失败
解决方法:进行sqlserver2019的卸载下载sqlserver2008进行实验
收获:sqlserver2019的卸载过程繁琐复杂,软件内附带的文件夹数量极多。
问题:连接数据库失败(能弹出登录界面,但输入用户名密码后显示"无法连接到SQL SERVER)。
解决方法:能弹出登录界面,但输入用户名密码后显示"无法连接到SQL SERVER 检查SQL Server是否在1433端口上监听,并配置Windows防火墙放行该端口,通telnet测试127.0.0.1 1433是否在监听。在 Sql Server 配置管理器中打开 TCP/IP 连接并添加一个 IP 地址为
127.0.0.1 端口设置为 1433。
二、阅读代码,了解前端界面和后端数据库交互过程。
1.采用SQL SERVER 身份验证登录到数据库
2.输入用户名和密码进行身份验证
3.若用户名有空格则重新进行验证,如下:
4.若用户名合格,检查密码正确,若正确则进入系统。如下:
- 万能密码实现SQL注入
当在登录时输入密码’OR’1’=’1时
以学生为例,代码:
(学号='" + loginUserName + "' AND 密码 ='" + loginPassword + "')变为
(学号='" + loginUserName + "' AND 密码 ='" + loginPassword + ’OR’1’=’1)
此时返回值必为1,实现了登陆成功。
- 防御万能密码
1. 代码层防止sql注入攻击的最佳方案就是sql预编译
2. 确认每种数据的类型,比如是数字,数据库则必须使用int类型来存储
3. 规定数据长度,能在一定程度上防止sql注入
4. 严格限制数据库权限,能最大程度减少sql注入的危害
5. 避免直接响应一些sql异常信息,sql发生异常后,自定义异常进行响应
6. 过滤参数中含有的一些数据库关键词