安全测试的一些思考总结

 

一、SQL注入

SQL注入就是把SQL命令插入到Web表单然后提交到所在页面请求(查询字符串),从而达到欺骗服务器执行恶意的SQL命令

1、表单类注入

登录时SQL应该是这样: select * from user where username='chengzi'  and password=md5('123456');

我们现在需要构建一个比如:在用户名输入框中输入: ’ or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为:

select * from user where username='' or 1=1 #'  and password=md5('123456');

等价于

select * from user where username='' or 1=1;

就可以登录成功了

 

 

2、从网页传入参数注入

这是SQL注入中最常见的方法,并且根据该注入原理有跟多SQL注入工具

同样,首先应测试是否存在注入漏洞,简单的:’ 或 and 1=1 and 1=2之类的SQL语句。

如果没有检测,直接运行SQL语句,说明有机会注入。

举例:

从参数注入,简单的测试方法是:

① http://www.xxx.com/index.php?id=2

② http://www.xxx.com/index.php?id=2' and 1=1

③ http://www.xxx.com/index.php?id=2' and 1=2

可以注入的表现:

① 正常显示(这是必然的,不然程序就有错)

② 正常显示,内容基本与①相同

③ 提示BOF或EOF(程序没做任何判断时)、或提示找不到记录(判断了rs.eof时)、或显示内容为空(程序加了on error resume next)

说明未进行特殊字符过滤处理,存在SQL注入漏洞

 

二、代码注入

1、表单提交类,提交javascript死循环代码

 <script>
 for(i=0;i<1;i--)
 {
 alert("msg")
 }
 </script>

三、其它

1、欺骗后端

 a、设置请求断点进行请求拦截,修改相关传参,测试后端是否做了校验

 如:下单100元的衣服,提交订单时,我们设置请求断点进行拦截,修改参数100元为1元时,再次提交,应该是无法提交成功的,服务端给出提示“金额不足,无法购买!”

 b、并发请求测试多线程是否加锁

 如:余额100元,购买50元的衣服,设置断点拦击请求,并发请求5次,实际购买成功2件,其它3件服务端会给出提示“余额不足,无法购买!”

 c、每日秒杀,每人每日限购1次

 如:~~~~~~~~~

 

2、欺骗前端

a、设置响应断点,修改响应返回数据,测试前端

 如:修改密码,需要输入手机号和验证码,提交后跳转至设置新密码页面,这时我们可以对提交后响应码或响应数据修改为请求成功时的,前端可以越过验证码跳转至设置新密码页面了。

 

3、敏感字段暴露和加密

  a、数据库中存放重要字段需要进行加密处理存放

  如:登录密码、支付密码、签名等

 b、接口避免返回敏感重要字段

  如:身份证号、银行卡号、登录、支付密码

 c、重要功能需进行验证码身份认证

 如:修改密码、转账、支付

4、登录需设置失效时间

5、每日登录失败需有次数限制

 

 

 

~~~~~~~~~~~待续~~~~~~~~~~~~~~~~~~~~

转载于:https://www.cnblogs.com/chengzi521/p/9650644.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值