常见的web安全问题及防范方法

本文探讨了五个主要的Web安全问题,包括SQL注入、CSRF攻击、URL跳转漏洞、路径遍历风险以及文件上传漏洞。针对这些问题,文章提供了解决和预防的方法,以增强网站的安全性。
摘要由CSDN通过智能技术生成

sql注入

漏洞名称

SQL注入漏洞

漏洞原理

通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,

通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

漏洞分类

1. 平台层SQL注入:

            不安全的数据库配置或数据库平台的漏洞所致

2. 代码层SQL注入:

            程序员对输入未进行细致地过滤从而执行了非法的数据查询

产生原因

1. 不当的类型处理;

2. 不安全的数据库

3. 不合理的查询集处理

4. 不当的错误处理;

5. 转义字符处理不合适;

6. 多个提交处理不当。

防护建议

1.对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和

双"-"进行转换等。

2.不要使用动态拼装sql,可以使用参数化的sql

3.不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。

流程建议

在部署应用系统前,始终要做安全审评。建立一个正式的安全过程,并且每次做更新时,要对所有的编码做审评。

开发队伍在正式上线前会做很详细的安全审评,然后在几周或几个月之后他们做一些很小的更新时,

他们会跳过安全审评这关, “就是一个小小的更新,我们以后再做编码审评好了”。请始终坚持做安全审评

举例

  1. Select author, title, year, from books where publisher = ‘willey’and published = 1

其中字符串willey由前端输入, willey->O’willey

  1. Select author, title, year from books where publisher = ‘O’willey’ and published = 1
  2. Incorrect syntax near ‘Reilly’
  3. Select author, title, year from books where publisher = ‘willey’ OR 1=1 --’and published = 1   willey’or 1=1—‘

如何防止SQL注入

  1. 将SQL的一些关键字符: ‘ – 进行转义处理
  2. 参数化查询,

SQL拼接方式的结构:

定义查询结构

String queryText = “select ename, sal from emp where ename = ‘”;

拼接查询语句

queryText += request.getParameter(“name”);

queryTrxt + =”’”;

执行查询

   Stmt = con.createStatement();

   Rs = stmt.exceuteQuery(queryText);

使用参数绑定的办法:

String queryText = “select ename, sal from emp where ename = ?”;

使用数据库连接”con”预处理语句

Stmt = con.prepareStatement(queryText);

Stmt.setString(1, request.getParameter(“name”))

 

编码规范

JAVA:

不允许直接根据用户输入的参数拼接sql的情况出现,直接使用PreparedStatement进行sql的查询;

并且需要对输入的参数进行特殊字符的过滤。使用Hibernate等框架的,可以使用参数绑定等方式操作sql语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拥春飞翔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值