JSP SQL注入
Login.JSP
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>Login</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head> <body>
<form method="POST" action="servlet/Login">
用户名:
<input type="text" name="UserName" value="">
<BR>
密 码:
<input type="password" name="Pwd">
<BR>
<input type="submit">
</form>
</body>
</html>
Servlet:
package servlet; import java.io.*; import javax.servlet.*;
import javax.servlet.http.*; import dao.*; public class Login extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html");
String strUserName = request.getParameter("UserName");
String strPwd = request.getParameter("Pwd");
String strLoginSuccess = "";
if (LoginDao.CheckUser(strUserName, strPwd)) {
strLoginSuccess = "登录成功";
} else {
strLoginSuccess = "登录失败";
}
// 使结果显示输出中文
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <meta charset='UTF-8'>");
out.println(" <HEAD><TITLE>登录结果</TITLE></HEAD>");
out.println(" <BODY>");
out.print("[" + strLoginSuccess + "]");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
DAO:
package dao; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class LoginDao {
static String url = "jdbc:sqlserver://127.0.0.1:1433;DataBaseName=HUAWEI";
static Connection con = null;
static Statement sta = null; public static boolean CheckUser(String strUserName, String strPwd) {
boolean bRet = false;
try {
// 连接
Connc(); bRet = doLogin(strUserName, strPwd);
// 关闭
Close(); } catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} return bRet;
} static void Connc() throws ClassNotFoundException, SQLException {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(url, "sa", "sa");
} static void Close() throws SQLException {
if (con != null) {
con.close();
con = null;
}
} static boolean doLogin(String myName, String pwd) {
String strPwdFromDb = "";
boolean bRet = false; try {
sta = con.createStatement();
ResultSet ret = sta.executeQuery("SELECT Pwd FROM [USER] WHERE UserName = '"+ myName + "' AND Pwd = '" + pwd + "'");
if (ret.next()) {
bRet = true;
}
if (sta != null) {
sta.close();
sta = null;
}
return bRet;
} catch (SQLException e) {
e.printStackTrace();
}
return bRet;
}
}
数据库:"USER表"
| UserName | Pwd |
| Apple | 123 |
| Boy | 456 |
| Cat | 789 |
| Dog | ABC |
| NULL | NULL |
混乱SQL文:
JSP SQL注入的更多相关文章
- JSP SQL注入--破法
1.JS验证拦截 <%@ page language="java" import="java.util.*" pageEncoding="UTF ...
- 防止 jsp被sql注入的五种方法
一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...
- 【sql注入】浅谈JSP安全开发之SQL注入
[sql注入]浅谈JSP安全开发之SQL注入 本文转自:i春秋社区 前言不管是用什么语言编写WEB应用程序,他们都或多或少有一些地方存在漏洞.如果你想知道漏洞的运行原理,和防御方案,那么请看完本篇文章 ...
- JSP使用过滤器防止SQL注入
什么是SQL注入攻击?引用百度百科的解释: sql注入_百度百科: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具 ...
- JSP网页防止sql注入攻击
SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使 ...
- Java防止SQL注入(转)
一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库. 二.SQL注入攻击的总体 ...
- WEB安全:XSS漏洞与SQL注入漏洞介绍及解决方案(转)
对web安全方面的知识非常薄弱,这篇文章把Xss跨站攻击和sql注入的相关知识整理了下,希望大家多多提意见. 对于防止sql注入发生,我只用过简单拼接字符串的注入及参数化查询,可以说没什么好经验,为避 ...
- 初探SQL注入
1.1注入语句(通过时间注入函数) 数据库名称 localhost:8080/ScriptTest/userServlet?username='union SELECT IF(SUBSTRING(cu ...
- 防SQL注入
addslashes(); 一.SQL注入简介 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库 ...
随机推荐
- Struts2 Interceptors
Alias Interceptor : 别名拦截器 <action name="someAction" class="com.examples.SomeAction ...
- [转]PO和VO、关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )
摘自http://www.cnblogs.com/kelin1314/archive/2009/11/13/1602778.html PO和VO PO 即Persistence Object VO 即 ...
- Javascript之类型检测
一.检测原始(基本数据:字符串.数字.布尔.null.undefined)类型. 用typeof检测原始类型:1.对于字符串,typeof返回"string"; 2.对于数字,ty ...
- 【解决方案】: hyper-v 导入虚拟机报这个错误 32784
从win server 2012创建的虚拟机 导出后, 想导入到本机win8系统上,结果报错 32784, google了一堆,都说不支持... 实际上 1.在win8系统上 新建一个不带硬盘的虚拟机 ...
- golang获取字符串长度需要注意的地方
中文长度,直接贴代码 package main import ( "fmt" "unicode/utf8" ) func main() { aa := &quo ...
- Return 和 Break 的区别
前段日子发布的负面情绪太多了,哦哦,其实我需要的是努力,努力提高自己的真实能力.经历了好多的鄙视否定,我已经没有最初那么敏感,心态平和了许多.我没有借口说基础不好了,一年了,要努力的话,那么我应该不会 ...
- 第一次正式java web开发项目的总结
去年下半年到现在,因为公司人员流动,也有好几个新进的员工分给我来带领,也有刚从学校出来的,在和他们交流的过程中,不由的想起自己刚刚进入这行的一些感想. 记得自己当初写过一篇总结的,我想这些对于刚出校门 ...
- (WPF, MVVM) Event 处理
WPF的有些UI元素有Command属性可以直接实现绑定,如Button 但是很多Event的触发如何绑定到ViewModel中的Command呢? 答案就是使用EventTrigger可以实现. 继 ...
- ubuntu 16.04 小键盘数字键盘开机自动启动
ubuntu 16.04 小键盘数字键盘开机自动启动 最近安了ubuntu 16.04,用windows用久了,换一个也挺好玩的! 但ubuntu 16.04因为算是最新的吧,还是存在些令我们不适应的 ...
- 【转】C++ 单例模式
http://blog.csdn.net/hackbuteer1/article/details/7460019 单例的一般实现比较简单,下面是代码和UML图.由于构造函数是私有的,因此无法通过构造函 ...