文档章节

WEB攻击手段及防御第2篇-SQL注入

o
 osc_4hct2n4z
发布于 07/02 16:28
字数 563
阅读 23
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

概念

SQL注入即通过WEB表单域插入非法SQL命令,当服务器端构造SQL时采用拼接形式,非法SQL与正常SQL一并构造并在数据库中执行。

简单的SQL注入的例子:

例1:test123456 or 1=1;

加上or 1=1,如果没有防止SQL注入,这样攻击者就能成功登录。

例2:test123456';drop table xxx--

这样会删除一个表,--后面的就是注释

防御手段

1、禁止采用SQL拼接的形式

这也是最重要的一点,要采用参数化的形式。如mybatis参数占位符要使用##,它会给参数默认带上单引号,所有输入输入的字符当作一个参数来处理,而不是命令,不要使用$$,它不会带单引号有SQL注入的风险。

2、过滤或转义特殊字符

特殊字符包括如:单引号、杠等,或者使用正则表达式过滤如drop table、delete..、update..等危害数据库安全的请求,前后端都要采用措施。

3、数据库用户权利最小化

不要使用最大权限的管理员进行连接,为每个应用使用独立的所在库的账号进行连接,这样使权利最小化。

4、发生异常不要使用错误回显,

即显示默认的服务器500错误,把代码及表名信息直白显示在网页上,这样攻击者就能通过恶意操作使网页出现500错误从而看到数据库表名等内部信息。

5、加密存储敏感信息

用户敏感信息如身份证、手机号、邮箱、卡号等一定要加密存储,而且要妥善保密密钥。

关注公众号Java技术栈回复"面试"获取我整理的2020最全面试题及答案。

推荐去我的博客阅读更多:

1.Java JVM、集合、多线程、新特性系列教程

2.Spring MVC、Spring Boot、Spring Cloud 系列教程

3.Maven、Git、Eclipse、Intellij IDEA 系列工具教程

4.Java、后端、架构、阿里巴巴等大厂最新面试题

觉得不错,别忘了点赞+转发哦!

o
粉丝 0
博文 74
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
Web开发组件管理器--Bower

Bower 是一个针对Web开发的包管理器。该工具主要用来帮助用户轻松安装CSS、JavaScript、图像等相关包,并管理这些包之间的依赖。 功能有些类似于Component。不同之处是,Component是围绕Git...

匿名
2013/02/01
1.2W
2
数据库代码辅助工具--MaoCaiJun.Database

MaoCaiJun.DataBase 是一个用于 Microsoft Visual Studio 的数据库代码生成组件。它是基于 xml 文件的代码创建工具,支持sql2000,sql2005,sql2008,access, SQLite MaoCaiJun.Database 数据库...

mccj
2013/02/06
2.4K
1
漏洞检测工具--Peach Fuzzer

Peach是一种用Python编写的 Fuzzer。这种工具有助于发现并公开许多漏洞,并认为是黑客和安全团体中最流行的工具之一。为了利用Peach框架,必须创建Phthon脚本,脚本 中包含了在服务器上执行的...

匿名
2013/02/06
8.8K
1
Web 的 SSH 控制台--KeyBox

KeyBox 是一个基于 Web 的 SSH 控制台,用于同步管理多个系统并且可执行远程命令。允许你共享终端命令并上传文件到所有系统。但连接会话打开时你可选择在其中一个终端或者多个终端上执行命令...

匿名
2013/02/28
8.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

没有指定分支的“git push”的默认行为 - Default behavior of “git push” without a branch specified

问题: I use the following command to push to my remote branch: 我使用以下命令推送到我的远程分支: git push origin sandbox If I say 如果我说 git push origin does that push ch......

技术盛宴
22分钟前
11
0
为什么在允许某些Unicode字符的注释中执行Java代码?

问题: The following code produces the output "Hello World!" 以下代码生成输出“Hello World!” (no really, try it). (不,真的,试试吧)。 public static void main(String... args......

富含淀粉
今天
18
0
字符串格式:%与.format - String formatting: % vs. .format

问题: Python 2.6 introduced the str.format() method with a slightly different syntax from the existing % operator. Python 2.6引入了str.format()方法,其语法与现有的%运算符略有不......

javail
今天
22
0
什么是按位移位(位移)运算符以及它们如何工作? - What are bitwise shift (bit-shift) operators and how do they work?

问题: I've been attempting to learn C in my spare time, and other languages (C#, Java, etc.) have the same concept (and often the same operators) ... 我一直在尝试在业余时间学习......

法国红酒甜
今天
32
0
OSChina 周二乱弹 —— 卧槽 李荣浩的契约兽啊

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《红色的回忆》- 痛仰乐队 手机党少年们想听歌,请使劲儿戳(这里) 动弹, 又好多...

小小编辑
今天
67
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部