如何防止网站被SQL注入攻击之java网站安全部署

简介: SQL注入攻击(SQL injection)是目前网站安全以及服务器安全层面上是最具有攻击性,危害性较高,被黑客利用最多的一个漏洞,基本上针对于网站代码,包括JAVA JSP PHP ASP apache tomcat 语言开发的代码都会存在sql注入漏洞。

SQL注入攻击(SQL injection)是目前网站安全以及服务器安全层面上是最具有攻击性,危害性较高,被黑客利用最多的一个漏洞,基本上针对于网站代码,包括JAVA JSP PHP ASP apache tomcat 语言开发的代码都会存在sql注入漏洞。

 

随着JAVA JSP架构的市场份额越来越多,许多平台都使用JAVA开发,本文通过对sql注入的详细分析,从代码层面以及服务器层面,根本上来防止sql注入攻击。

 

SQL注入漏洞的原理很简单,通俗来讲:就是程序员在编写网站代码的时候,一些执行数据库命令的代码,程序员没有认真写以及认真过滤,导致可以将外部的恶意参数拼接到SQL语句当中去,直接传入到数据库中去执行,导致黑客可以执行一些查询用户账户密码,修改信息,执行系统命令的安全操作。

 

网站安全服务

 

下面我们来搭建一个JAVA环境的网站,设计一个可以查询用户信息的一个api 服务接口,我们采用的都是springboot + jersey 来搭建我们的web服务查询框架。

 

数据库是Mysql 架构的,建立一个新的数据库表:admin,然后创建管理员账户跟密码(采用md5加密方式),这样我们的用户信息有了,就可以提供查询了。我们把springboot + jersey框架服务搭建起来,然后写一下查询的代码到框架里。Sine安全公司是一家专注于:服务器安全、网站安全、网站安全检测、网站漏洞修复,渗透测试,安全服务于一体的网络安全服务提供商。

 

我们再来测试下查询的接口,是否可以正常输出:

 

通过网站进行get请求提交,Web服务接口返回200并输出了用户名为admin的管理员账户以及密码。这样的输出是属于正常的,但是我们在网站端发送一条带有逗号的GET请求,会发现报错了。

 

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''xxxx''' at line 1。

 

也就是说上面的查询是错误的,因为我们添加了一个逗号在里面,导致传入到数据库并执行的同时,数据库返回的错误提示。

网站安全部署

 

SQL注入详情解析:

 

GET的网站时候参数的时候,传入了一个String类型的name参数值,并且通过字符串联起来,构建了数据库的查询语句。在正常操作的情况下,用户会传入合法的name参数值进行数据库查询,但是攻击者会编造一些恶意的参数,只要参数通过字符串拼接后依然是一句合法的SQL查询,此时SQL注入就发生了。正如我们上文输入的name=xxxx'or'a'='a与我们接口中的查询语句进行拼接后构成如下SQL语句如图:

当接口执行name=xxxx'or'a'='a这个SQL语句后,系统后台也就相当于免费的送给黑客了,黑客一看到管理员密码这个hash,都不用去cmd5解密了,攻击者就会直接使用123456这个密码去登录网站的后台管理系统。为什么?因为123456的md5哈希太常见了,这就是很多JAVA网站的现实,在网站安全以及弱口令方面简直做的不忍直视。

 

好了,现在我们应该明白了,SQL Injection原因就是由于传入的参数与系统的SQL拼接成了合法的SQL而导致的,而其本质还是将用户输入的数据当做了代码执行。在系统中只要有一个SQL注入点被黑客发现,那么黑客基本上可以执行任意想执行的SQL语句了,例如添加一个管理员,查询所有表,修改用户密码等等。

 

以上是对sql注入攻击的详情,下文会详细的介绍,如何去防范sql注入的攻击,知彼知己才能百战不殆。了解了sql的攻击原理,才能更好去防御sql注入攻击。

网站安全需要精心雕琢,服务器安全是100 - 1 = 0的业务,即使你防御了99%的攻击,那还不算胜利,只要有一次网站被入侵了,那就有可能给公司带来很严重的损失跟后果。如果不懂网站防SQL攻击的的话,也可以找专业的安全公司来部署防sql注入攻击部署,国内安全公司像绿盟、Sinesafe、在安全方面都是做的比较不错的。

 

 

SQL注入的其他防范办法

很多公司都会存在老系统中有大量SQL注入风险代码的问题,但是由于其已稳定支持公司业务很久,不宜采用大面积代码更新的方式来消除注入隐患,所以需要考虑其采用他方式来防范SQL注入。除了在在SQL执行方式上防范SQL注入,很多时候还可以通过架构上,或者通过其他过滤方式来达到防止SQL注入的效果。

一切输入都是不安全的:对于接口的调用参数,要进行格式匹配,例如admin的通过name查询的接口,与之匹配的Path应该使用正则匹配(因为用户名中不应该存在特殊字符),从而确保传入参数是程序控制范围之内的参数,即只接受已知的良好输入值,拒绝不良输入。注意:验证参数应将它与输出编码技术结合使用。

利用分层设计来避免危险:前端尽量静态化,尽量少的暴露可以访问到DAO层的接口到公网环境中,如果现有项目,很难修改存在注入的代码,可以考虑在web服务之前增加WAF进行流量过滤,当然代码上就不给hacker留有攻击的漏洞才最好的方案。也可以在拥有nginx的架构下,采用OpenRestry做流量过滤,将一些特殊字符进行转义处理。

尽量使用预编译SQL语句:由于动态SQL语句是引发SQL注入的根源。应使用预编译语句来组装SQL查询。

规范化:将输入安装规定编码解码后再进行输入参数过滤和输出编码处理;拒绝一切非规范格式的编码。

 

专注于安全领域 解决网站安全 解决网站被黑 网站被挂马 网站被篡改 网站安全、服务器安全提供商-www.sinesafe.com --专门解决其他人解决不了的网站安全问题.
相关文章
|
30天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
23 5
|
1月前
|
SQL IDE Java
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
24 1
|
1月前
|
数据采集 XML 前端开发
Jsoup在Java中:解析京东网站数据
Jsoup在Java中:解析京东网站数据
|
1月前
|
SQL 分布式计算 Java
Hadoop-11-MapReduce JOIN 操作的Java实现 Driver Mapper Reducer具体实现逻辑 模拟SQL进行联表操作
Hadoop-11-MapReduce JOIN 操作的Java实现 Driver Mapper Reducer具体实现逻辑 模拟SQL进行联表操作
35 3
|
1月前
|
Kubernetes Cloud Native 流计算
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
Flink-12 Flink Java 3分钟上手 Kubernetes云原生下的Flink集群 Rancher Stateful Set yaml详细 扩容缩容部署 Docker容器编排
76 3
|
1月前
|
Java Docker 容器
java版本学习网站又添加了一个libgdx模块
java版本学习网站之前添加了docker,想了想还是再把libgdx添加进去吧。
32 3
WK
|
25天前
|
安全 Java 编译器
C++和Java哪个更适合开发web网站
在Web开发领域,C++和Java各具优势。C++以其高性能、低级控制和跨平台性著称,适用于需要高吞吐量和低延迟的场景,如实时交易系统和在线游戏服务器。Java则凭借其跨平台性、丰富的生态系统和强大的安全性,广泛应用于企业级Web开发,如企业管理系统和电子商务平台。选择时需根据项目需求和技术储备综合考虑。
WK
45 0
|
1月前
|
安全 Java Python
基于python-django的Java网站全站漏洞检测系统
基于python-django的Java网站全站漏洞检测系统
34 0
|
2月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
115 13

热门文章

最新文章

下一篇
无影云桌面