安全性测试
安全性测试:指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。
安全性测试的目的:查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法入侵的防范能力。
例子:对于一个公司内部使用(只有通过内网才能访问,互联网上无法访问)的B/S结构软件,这样的软件不用过于注重安全性问题。
一些常见的软件安全问题有:
- 缓冲区溢出
- 格式化字符串攻击
- 整数溢出
- SQL注入
- 命令注入
- 跨站脚本攻击
- 函数错误返回值、异常未被处理
- 网络数据截获
- MagicURL隐藏的表单字段攻击
- SSL、TLS协议攻击
- 脆弱的登录口令
- 存储中的访问控制攻击
- 系统和应用程序的信息泄露
- 非法文件访问
- 域名服务解析攻击
- 竞争条件攻击
- 未认证的密钥交换
- 密码学随机数破解
安全测试常用的静态检测工具有:
- Fortify(微软)
- Rough Auditing Tool for Security
- BEAM
- SLAM
- Flaw Finder
- Prexis
- Coverity
安全性测试的主要方法有:
静态的代码安全测试:通过对源代码进行安全扫描
动态的渗透测试:模拟黑客输入,对应用系统进行攻击性测试
程序数据扫描:通常是进行内存测试
正向测试过程(以测试空间为依据寻找缺陷和漏洞)和反向测试过程(以已知的缺陷空间为依据去寻找软件中是否会发生同样的缺陷和漏洞)
1、什么是跨站脚本(XSS)攻击?
解答:指web应用程序从恶意用户处得到输入,不需要进行验证就直接回显。如果这种回显由恶意的可被浏览器解析脚本代码生成,一旦受害浏览器单击了包含回显的链接,则受害浏览器将会执行这些恶意代码,从而受到攻击。
例子1:在网页上,在任意输入文本域输入:
<script>alert("hello");</script>
单击“提交”按钮,若弹出对话框“hello”,则说明存在XSS缺陷。
例子2:在网页上,在任意输入文本域输入:
<iframe src=http://www.goole.cn width=100 height=100></iframe>
单击“提交”按钮,若弹出谷歌部分页面,则说明存在XSS缺陷。
2、什么是SQL注入?
解答:SQL注入属于命令注入,指发生在应用程序与数据库层的安全漏洞。
简而言之,是在输入的数据字符串之中夹带SQL指令,被数据服务器误认为是正常的SQL指令而运行导致破坏。另外,SQL还有一个变种针对存储过程的,存储过程接收一个参数,若不检查执行这个参数进行字符串连接,执行连接结果,就可能会出现安全性问题。
例子:假设某网站登录验证的SQL查询代码为:SELECT *FROM users WHERE(name='''+userName+''') and (pw='''+passWord+''');
若在用户名文本框输入: 'OR'1'='1
在密码文本框输入: 'OR'1'='1
此时导致原本的SQL字符串被输入为:SELECT *FROM users WHERE(name= ''OR'1'='1') and (pw=''OR'1'='1');
也就是说实际上运行的SQL命令会变成:SELECT *FROM users;
此时,恶意用户虽然没有账号密码,亦可以成功登录网站。
3、在你所测试的这个B-S结构软件中,你们在用户登录页面有哪些安全措施?
解答:
(1)对用户名和密码进行加密,在网上传输时不是明文
(2)对登录时调用的SQL语句做了处理,防止SQL注入
(3)要防止URL的SQL注入
(4)用户名和密码的输入文本框都限制了输入长度,防止缓冲区溢出
(5)如果URL输入错误如在后面加个单引号,则错误提示信息中不包含源代码内容等安全信息
(6)处理了代码,防止XSS攻击
(7)强制用户不能使用弱口令,例如长度要求在6-15位之间
(8)当用户输错密码达到5次,该账户将被锁定
(9)由于该系统中用户名是电子邮件格式,所以要求输入必须符合国际规范,如RFC822
(10)在“忘记密码”处理页面中也要防止SQL注入和XSS攻击
(11)在“忘记密码”的所有输入文本框中都限制输入长度,防止缓冲区溢出
(12)在“忘记密码”处理页面中的URL输入错误如在后面加个单引号,则错误提示信息中不包含源代码内容等安全信息
(13)如果没有成功登录,则即使用户输入此软件其他页面的URL,也会被重定向到登录页面
(14)要注意重定向问题(若客户端发送不加检查的当做redirect的参数,则很有可能会出现问题)
4、什么是Cookie欺骗?
解答:指一些网站服务器存在用户计算机上的一个文本文件,为了辨别用户身份而存储在用户本地终端上(数据通常经过加密),它与服务器有一定的交互性,常存储用户名和网站登录密码。
由于cookie是保存在客户端浏览器中,对通信协议无影响,攻击者可能通过伪造cookie信息,绕过网站程序的验证,也不需要输入密码,以任意用户的身份登录网站。
进行cookie欺骗的有多种途径:
- 跳过浏览器吗,直接对通信数据进行改写
- 修改浏览器,让浏览器从本地可以读写任意域名cookie
- 使用签名脚本,让浏览器从本地可以读写任意域名cookie
- 欺骗浏览器,让浏览器获得假的域名
5、什么是网络钓鱼?
解答:是一种企图从电子通信中,通过伪装成信誉卓著的法人媒体以获得如用户名、密码和信用卡明细登个人敏感信息的犯罪诈骗过程。
网络钓鱼通常是通过电子邮件或即时通信进行。它常常引导用户到URL与接口外观与真正网站几无二致的假冒网站输入个人数据,即使使用加密的SSL服务器认证,要想侦测网站是否仿冒实际上扔很困难。
网络钓鱼技术主要有:
- 链接操控
- 过滤器规避
- 网站伪造。
6、可编辑的标签、文本输入框,安全性角度考虑测试点?
解答:
- 输入 <b>hello</b> ,设置完成后,应该显示原文,而不是粗体hello;
- 输入Document.write('hello'),设置完成后不会跳出来一个对话框;
- 是否支持右键、快捷键如Ctrl+C,Ctrl+V,Ctrl+A(全选),Ctrl+X.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)