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

优秀企业网站建设公司杭州营销型网站建设

优秀企业网站建设公司,杭州营销型网站建设,网站首页做一点开有动画,宿迁网站建设公司文章目录 Java SQL注入防范类型转换预编译查询(PreparedStatement)使用 ORM 框架(如 MyBatis、Hibernate)白名单限制ORDER BY 语句LIKE 语句 限制数据库权限过滤和转义特殊字符 Java SQL注入防范 类型转换 Java 是强类型语言&am…

文章目录

    • Java SQL注入防范
      • 类型转换
      • 预编译查询(PreparedStatement)
      • 使用 ORM 框架(如 MyBatis、Hibernate)
      • 白名单限制
        • ORDER BY 语句
        • LIKE 语句
      • 限制数据库权限
      • 过滤和转义特殊字符

在这里插入图片描述

Java SQL注入防范

类型转换

Java 是强类型语言,因此直接的数值型 SQL 注入较少,但仍需要注意参数类型的安全性。

int id = Integer.valueOf(req.getParameter("id"));

这样可以确保 id 变量是整数,避免输入 1 OR 1=1 之类的 SQL 语句攻击。

预编译查询(PreparedStatement)

预编译(Parameterized Queries)是防止 SQL 注入的最好方法,能够确保用户输入的数据不会被解析为 SQL 代码。

例如:

public User getUserById(String id) throws SQLException {Connection connection = JDBCTOOLS.getConnection(); // 获取数据库连接String sql = "SELECT id, username FROM user WHERE id = ?";PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1, id);ResultSet resultSet = preparedStatement.executeQuery();if (resultSet.next()) {return new User(resultSet.getInt("id"), resultSet.getString("username"));}return null;
}

使用 ORM 框架(如 MyBatis、Hibernate)

ORM 框架能够自动处理 SQL 预编译,减少 SQL 注入的风险。

例如:

@Mapper
public interface CategoryMapper {@Select("SELECT * FROM category_ WHERE name = #{name}")Category getByName(String name);
}

白名单限制

某些情况下,用户输入可能用于 ORDER BYINLIKE 等 SQL 语句,预编译无法有效防止注入,这时可使用白名单校验。

ORDER BY 语句
private String checkSort(String sortBy) {List<String> columns = Arrays.asList("id", "username", "email");// 若传入的字段在允许列表内,则返回原字段;否则返回默认字段 "id"return columns.contains(sortBy) ? sortBy : "id";
}

这里通过 checkSort 方法,限定 ORDER BY 只能使用 白名单中的字段(id、username、email),如果 sortBy 不是合法字段,则默认按 id 排序。

String sql = "SELECT * FROM users ORDER BY " + checkSort(sortColumn);
LIKE 语句
String sql = "SELECT * FROM users WHERE username LIKE CONCAT('%', ?, '%')";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, userInput);

这里使用了预编译(PreparedStatement),将 userInput 作为参数传递,而不是直接拼接到 SQL 语句中。

限制数据库权限

数据库用户权限应遵循最小权限原则,避免 root 账户执行 SQL 语句。

CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'XXXX';

1、CREATE USER:在 MySQL 数据库中创建一个新用户。
2、‘app_user’@‘localhost’:用户名是 app_user。
3、@‘localhost’ 指定该用户只能从本机(localhost)连接到数据库,不能从其他 IP 访问。
4、IDENTIFIED BY ‘XXXX’:设置该用户的密码为 ‘XXXX’。

GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'localhost';

1、GRANT:授予数据库权限。
2、SELECT, INSERT, UPDATE:允许 app_user 在数据库 mydb 中执行 查询(SELECT)、插入(INSERT)、更新(UPDATE) 操作。
3、ON mydb.*:作用范围是 mydb 数据库中的所有表(* 代表所有表)。
4、TO ‘app_user’@‘localhost’:只将这些权限授予 本机的 app_user。

过滤和转义特殊字符

可以对用户输入进行严格的字符过滤,但不建议完全依赖此方法。

public static String sanitize(String input) {return input.replaceAll("[';--]", "");
}

replaceAll() 会将单引号 (')、分号 (;)、双减号 (–)替换为空字符串 “”,即删除这些字符。


文章转载自:

http://lMnUNQAJ.kyytt.cn
http://Z4mKxy7U.kyytt.cn
http://8l1hIR4H.kyytt.cn
http://LOuI85bw.kyytt.cn
http://6nwbojqH.kyytt.cn
http://CNKZ2EvC.kyytt.cn
http://s3DcsJPm.kyytt.cn
http://Dch6dFt2.kyytt.cn
http://i41Z4w83.kyytt.cn
http://lBwpxB0n.kyytt.cn
http://nc4xADWR.kyytt.cn
http://ZA7PET2h.kyytt.cn
http://NJmdYhQi.kyytt.cn
http://PCj0sGnT.kyytt.cn
http://lqrD0cK1.kyytt.cn
http://yidIbLjG.kyytt.cn
http://XsjXNV1x.kyytt.cn
http://3k7PJ8CZ.kyytt.cn
http://ohMYIG4c.kyytt.cn
http://GAGNge3Y.kyytt.cn
http://n2o82xtw.kyytt.cn
http://9GaiD1sJ.kyytt.cn
http://chGMlmjS.kyytt.cn
http://yZnq3pow.kyytt.cn
http://zL9LLJPX.kyytt.cn
http://HUKao8ex.kyytt.cn
http://XJLvbeMp.kyytt.cn
http://RH7vkft0.kyytt.cn
http://5vWJfbum.kyytt.cn
http://2kzKga41.kyytt.cn
http://www.dtcms.com/wzjs/630819.html

相关文章:

  • 商城网站开发视频建设网站前景怎么样
  • 广州企业模板建站wordpress多媒体权限
  • dede 汽车网站系统开发必须遵守的原则有哪些
  • 网站上做网上支付功能响应式设计的网站
  • 内乡微网站开发那些网站可以够买域名
  • 泉州企业网站制作毕业设计网站开发的目的和意义
  • 青岛即墨网站建设设计产品展示网站方案
  • 上海网站建设设计制作无锡建设招标网站
  • 织梦搭建商城网站专业电容层析成像代做网站
  • 海外仓网站建设seo对网店推广的作用
  • 毕设 网站开发的必要性佛山市网站建站网站
  • 创建一个网站的英文港口备案怎么在网站做
  • 手机网站安全证书过期怎么处理线上推广软件
  • 东莞怎么制作网站口碑营销的重要性
  • 在百度建免费网站吗响应式中文网站模板
  • 做网站如何宣传舟山网络科技有限公司
  • 河源正规网站建设价格最新消息深圳龙岗确诊
  • 小说网站建设笺池斋如何注册商标名称以及logo
  • 免费创建自己的网站医生做兼职有什么网站吗
  • 手机介绍网站东莞 企业网站建设
  • 展览展示设计网站计算机网站建设与推广
  • 建设p2p网站惠城网站建设
  • 桐乡网站建设潍坊网站建设如何
  • 织梦网站怎么做备份wordpress文章添加动态数据
  • 有了域名空间怎么做网站网盘做电子书下载网站
  • 做wd网站实训报告总结上海地产网站建
  • 国外做宠物产品的网站手机代理企业网站
  • 网站建设加微信上海的公司
  • 做算命网站挣钱么抖音分享小程序怎么赚钱
  • 东莞网站建设多少钱哪个网站开发是按月付费的