当前位置: 首页 > wzjs >正文

昆明定制化网站建设建网站的公司

昆明定制化网站建设,建网站的公司,软件商店下载安装应用,网页设计与制作教程考试开发: SQL 注入是一种数据库攻击手段。攻击者通过向应用程序提交恶意代码来改变原 SQL 语句的含义, 进而执行任意 SQL 命令,达到入侵数据库乃至操作系统的目的。 例如:下面代码片段中,动态构造并执行了一个 SQ…
开发:
SQL 注入是一种数据库攻击手段。攻击者通过向应用程序提交恶意代码来改变原 SQL 语句的含义,
进而执行任意 SQL 命令,达到入侵数据库乃至操作系统的目的。
例如:下面代码片段中,动态构造并执行了一个 SQL 查询来认证用户。
public void doPrivilegedAction( String username, char[] password) throws SQLException {
Connection connection = getConnection();
if (connection == null) {
// handle error
}
try {
String pwd = hashPassword(password);
String sqlString = "SELECT * FROM db_user WHERE username = '" + username + "' AND password
= '" + pwd + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(sqlString);
if (!rs.next()) {
throw new SecurityException( "User name or password incorrect");
}
// Authenticated; proceed
} finally {
try {
connection.close();
} catch (SQLException x) {
// forward to handler
}
}
}
如果攻击者能够替代 username password 中的任意字符串,它们可以使用下面的关于 username 的字
符串进行 SQL 注入。
validuser' OR '1'='1
当其注入到命令时,命令就会变成:
SELECT * FROM db_user WHERE username=’validuser' OR '1'='1' AND password=’’
同样,攻击者可以为 password 提供如下字符串。
' OR '1'='1
当其注入到命令时,命令就会变成:
SELECT * FROM db_user WHERE username='' AND password='' OR '1'='1‘
修复建议及参考:
造成 SQL 注入攻击的根本原因在于攻击者可以改变 SQL 查询的上下文,使程序员原本要作为数据
解析的数值,被篡改为命令了。防止 SQL 注入的方法如下:
1 )正确使用参数化 API 进行 SQL 查询。
2 )如果构造 SQL 指令时需要动态加入约束条件,可以通过创建一份合法字符串列表,使其对应于可
能要加入到 SQL 指令中的不同元素,来避免 SQL 注入攻击。
例 如 : 以 下 代 码 片 段 使 用
java.sql.PreparedStatement
代 替 java.sql.Statement , 在
java.sql.PreparedStatement 类中可以对输入字符串进行转义,如果使用正确的话,可以防止 SQL 注入。
public void doPrivilegedAction(String username, char[] password) throws SQLException {
Connection connection = getConnection();
if (connection == null) {
// Handle error
}
try {
String pwd = hashPassword(password);
// Ensure that the length of user name is legitimate
if ((username.length() > 8) {
// Handle error
}
String sqlString = "select * from db_user where username=? and password=?";
PreparedStatement stmt = connection.prepareStatement(sqlString);
stmt.setString(1, username);
stmt.setString(2, pwd);
ResultSet rs = stmt.executeQuery();
if (!rs.next()) {
throw new SecurityException("User name or password incorrect");
}
// Authenticated, proceed
} finally {
try {
connection.close();
} catch (SQLException x) {
// forward to handler
}
}
}
http://www.dtcms.com/wzjs/265072.html

相关文章:

  • 官方网站建设网站现在有什么技能培训班
  • 做网站用的什么服务器seo关键词排名系统
  • 江西建设部网站网络媒体推广方案
  • 沈阳建设厅网站上海优化seo排名
  • 汕头市公司网站建设多少钱交换链接或称互惠链接
  • 个人养老金制度seo入门教程
  • 网站制作公司珠海郑州百度公司地址
  • 昆明网站建设价目表首页排名优化公司
  • 含山县住房和城乡建设局网站企业网站营销实现方式解读
  • 博罗做网站长沙岳麓区
  • wordpress文章幻灯片seo搜索优化公司
  • 百度推广去哪里学技术重庆seo网站推广优化
  • 浙江网站建设价格seo每天一贴
  • 个人建网站大概多少钱合肥关键词排名
  • 武汉 做网站seo自学教程推荐
  • wordpress 加广告位深圳宝安seo外包
  • 本地建站软件有哪些百度关键词搜索怎么弄
  • dw网站建设字体颜色温州seo推广外包
  • wordpress 站外调用全国推广优化网站
  • 个人网站备案有什么限制seo优化运营
  • php网站开发账号密码湖南手机版建站系统开发
  • 网站开发三大流行语言苏州旺道seo
  • 编程入门自学网站seo外链发布工具
  • 上海闵行做网站的公司产品软文范例500字
  • 广州网站建设怎么做梁水才seo优化专家
  • 怎么让网站绑定域名访问网络推广员一个月多少钱
  • 网站空间到期查询百度一下搜索一下
  • 知名网站建设平台seochinaz查询
  • 临沧永德网站建设电子商务公司百度知道电脑版网页入口
  • 网络科技有限公司注册资金最低seosem是指什么意思