Java面试题解析之判断以及防止SQL注入

作者:帅气的小雅君 时间:2023-05-26 18:08:59 

本文研究的主要是Java面试题中的一个比较常见的题目,判断及防止SQL注入的问题,具体介绍如下。

SQL注入是目前黑客最常用的攻击手段,它的原理是利用数据库对特殊标识符的解析强行从页面向后台传入。改变SQL语句结构,达到扩展权限、创建高等级用户、强行修改用户资料等等操作。

那怎么判断是否被SQL注入了呢?

通过SQL注入的原理我们知道,判断SQL注入可以通过页面传入的数据,后台不应该相信从后台传入的任何数据特别是特殊整型参数和特殊字符参数!

防止SQL注入其实也很简单

1.检查变量数据类型和格式

只要是固定格式的变量,在SQL语句执行前,应该严格按照固定格式检查,确保变量是我们预想的格式!

2.过滤特殊符号

对于无法确定固定格式的变量,一定要进行特殊符号过来或转移处理,一面之星SQL时有歧义。

当我们上传图片的时候


enctype=\”multipart/form-data\”
enctype=”multipart/form-data”

没有“/“,表单中enctype=”multipart/form-data”的意思,是设置表单的MIME编码。默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form- data,才能完整的传递文件数据,进行下面的操作.

3.绑定变量,使用预编译语句

实际上,绑定变量使用预编译语句是预防SQL注入的最佳方法,使用预编译的SQL语句语义不会发生改变。在SQL语句中,变量用问号?表示,黑客即使本事再大,也无法改变SQL语句的格式,从根本上杜绝了SQL注入攻击的发生。

4.数据库信息加密安全

有时候数据库信息泄露了,我们应该对数据库的密码等信息进行加密(MD5等),这样信息泄露,损失也可以在控制在一定范围内。

使用JSP的时候要注意

1.不要随意开一生产环境汇总Webserver的错误显示。

2.永远不要相信来自用户端的变量输入,有固定格式的变量一定要严格检查对应的格式,没有固定格式的变量需要对引号等特殊字符进行必要的过滤转义。

3.使用预编译绑定变量的SQL语句

4.做好数据库账号权限管理

5.严格加密处理用户机密信息

一个好的程序一定要注意安全性,否则只适合练手。

来源:http://blog.csdn.net/jacxuan/article/details/70053665

标签:java,sql注入,面试题
0
投稿

猜你喜欢

  • C#实现日期格式转换的公共方法类实例

    2023-05-16 10:06:54
  • Android语音识别技术详解及实例代码

    2022-09-23 03:46:33
  • spring强行注入和引用实例解析

    2021-11-23 23:26:19
  • Java代码精简之道(推荐)

    2023-07-28 02:00:05
  • Android Flutter实现搜索的三种方式详解

    2023-07-10 18:00:49
  • Android实现简易浏览器遇到问题的解决方法

    2023-06-15 21:47:56
  • C#写入XML文档

    2022-03-21 18:08:33
  • 利用Thumbnailator轻松实现图片缩放、旋转与加水印

    2022-03-26 18:44:04
  • 利用Kotlin Tools如何快速添加Kotlin依赖详解

    2021-06-24 05:43:52
  • mybatisPlus条件构造器常用方法小结

    2023-12-16 07:04:09
  • Spring七大事务传递机制深入分析实现原理

    2022-12-21 16:28:37
  • java中thread线程start和run的区别

    2023-09-30 13:12:16
  • java发送kafka事务消息的实现方法

    2022-05-17 01:18:35
  • C#实现如何使用短信平台自动通知用户实例

    2022-04-21 07:51:40
  • Jetpack Compose实现列表和动画效果详解

    2022-07-16 21:14:44
  • Netty分布式高性能工具类recycler的使用及创建

    2022-03-04 17:57:32
  • MyBatis字段名和属性名不一致的解决方法

    2022-12-15 18:15:22
  • java如何实现字符串中的字母排序

    2021-09-17 14:55:11
  • Spring Boot 异步框架的使用详解

    2022-11-14 23:10:38
  • Android实现人脸支付的示例代码

    2023-07-30 14:23:52
  • asp之家 软件编程 m.aspxhome.com