实验四、web安全
文章目录
一、实验目的及要求
1.熟悉浏览器安全的方法;
2.了解网页编程中SQL注入手段和防范措施;
3.强化动态网页设计安全意识。
二、实验学时
2学时
三、实验任务
掌握浏览器与动态网页设计的安全技术手段
四、实验重点、难点
动态网页设计的安全技术
五、实验过程:
1、web浏览器比如IE浏览器的安全技术手段有哪些?请尽可能列出来。
答:
1.白名单
2.禁用或限制使用Java程序及ActiveX控件
3.防止泄露自己的信息
4.清除已浏览过的网址
5.清除已访问过的网页
6.永远不怕IE主页地址被修改
7.挖出IE本地安全配置选项
8.在DOS下打开"Internet属性"窗口
9.解除IE的分级审查口令
10.预防网页恶意代码
11.管理好Cookie
2、动态网页设计请采用C#.net实现一个登录案例,本案例中防范SQL注入有哪些措施?写出详细的设计与实现过程。
答:
详细见我另一篇博客
下为缩减版
Mysql数据库设计:
插入数据:
项目设计:
Login.aspx
Login.aspx.cs
对登录按钮写脚本:
页面测试:
登录成功:
sql 注入攻击
3、上述登录案例中加验证码有什么好处?哪一种验证码相对安全?
答:
可以防止恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,利用比较简易的方式实现了这个功能。
常用验证码:
图形验证码
短信验证码
语音验证码
滑动验证码
相对安全:点触式和滑动式的验证码,通过采集用户当前各种的参数行为(行为轨距,操作时间,当前环境等等)来判断是否为机器行为。在用户体验上,手机端不是很建议使用选字类型的验证码,对于非大屏的手机不是很友好。在安全性上,这类验证码要比其他验证码破解成本高
4、在web安全有哪些安全措施?请尽可能列出来。
答:
HTTP Basic验证
这种验证成为HTTP基本验证,它是由HTTP1.1规范定义的,这是一种保护资源的最简单和最常用的验证机制。当浏览器请求任何受保护资源时,服务器都要求一个用户名和口令。如果用户输入了一个合法的用户名和口令,服务器才发送资源。
HTTP基本验证的优点是:实现较容易,所有的浏览器都支持。缺点是:因为用户名和口令没有被加密,而是采用Base64编码,所以是不安全的;不能自定义对话框的外观
HTTP Digest验证
这种验证称为HTTP摘要验证,它除了口令是以加密的方式发送,其他与基本验证都一样,但比基本验证全。
HTTP摘要验证的优点有:比基本验证安全;缺点:只能被IE5以上版本支持;许多Servlet容器不支持,因为规范并没有强制要求。
FORM-based验证
这种验证称为基本表单的验证,它类似于基本验证,但它使用用户自定义的表单来获得用户名和口令而不是使用浏览器的弹出对话框。开发人员必须创建表单的HTTP页面,对表单外观可以定制。
基本验证表单的优点是:所有的浏览器都支持,而容易实现。客观可以定制登录页面的外观。缺点是:它不是安全的,用户名/口令没有加密。
HTTPS Client验证
这种验证称为客户证书验证。它采用HTTPS传输信息。HTTPS是在安全套接层(Secure Socket Layer,SSL)之上的HTTP,SSL可以保证Internet上敏感数据传输的保密性。在这样机制中,当浏览器和服务器之间建立起SSL连接后,所有数据都以加密的形式传输。
优点:它是4中验证类型中最安全的,所有常用浏览器都支持;缺点:它需要一个证书授权机构(如VeriSign)的证书;它的实现和维护的成本较高。
什么是Sql注入?
就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
防护Sql注入:
1、永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等;
2、永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取;
3、永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接;
4、不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息。
CSRF攻击是什么 ?
英文全称是Cross-Site-Request-Forgery 即 跨站请求伪造,顾名思义 CSRF攻击就是黑客引诱用户打开黑客的网站,利用用户的登录状态发起跨站请求。
防护CSRF攻击:
1、针对实际情况,设置 Cookie 的 SameSite 属性为 Strict 或 Lax
2、服务端验证请求来源(Referer,Origin)
3、使用CSRF Token ,服务端随机生成返回给浏览器的Token
4、加入二次验证(独立的支付密码)
六、实验小结(100字左右)
本次实验学习了用c#开发登录界面,在开发过程中虽然有些许的困难,但最后不断学习,提升了。受益匪浅,也学习到sql攻击,今后数据库设计和后台代码编程将会更加注意信息安全这方面。本次实验学会了很多,期待下一次的实验。