内容简介:前端Javascript验证是为了防止用户输入错误,服务端验证是为了防止恶意攻击。主要是搜集服务器的配置信息和网站的信息,其中包括网站注册人、目标网站系统、目标服务器系统、目标网站相关子域名、目标服务器所开放的端口和服务器存放网站等。一个开源的网络连接端扫描软件,用来扫描计算机开放的网络连接段,确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统,号称"扫描之王"
Web安全简介
前端Javascript验证是为了防止用户输入错误,服务端验证是为了防止恶意攻击。
信息探测
主要是搜集服务器的配置信息和网站的信息,其中包括网站注册人、目标网站系统、目标服务器系统、目标网站相关子域名、目标服务器所开放的端口和服务器存放网站等。
Google Hack
-
搜集子域名
site:qq.com
-
搜集web信息
intitle:管理登录 filetype:php intext:Powered by Discuz
Nmap
一个开源的网络连接端扫描软件,用来扫描计算机开放的网络连接段,确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统,号称"扫描之王"
DirBuster
一款专门用于探测web服务器的目录和隐藏文件。 该软件的原理?
指纹识别
- 比如某CMS存在一个特征,在根目录下回存在"dxs.txt",且内容为 dxs v1.0,这个特征就相当于这个CMS的指纹。
- 在HTTP请求中通过Server头来获取Web容器信息也算是一种指纹识别
- 指纹识别最重要的是特征库
SQL注入漏洞
攻击者绕过程序限制,使用户输入的数据代入数据库执行,利用数据库的特殊性获取更多的信息或者更大的权限。
- 数字型注入:
- 有一个根据ID查询用户信息的接口 http://www.example.com/user?id=1
- 服务端拼接 SQL 为 SELECT * FROM user WHERE id = {Id} ,
-
如果用户传入
id=8 OR 1=1
,那么最后的SQL会变成 SELECT * FROM user WHERE id = 8 OR 1=1
- 字符型注入 字符串类型一般需要使用单引号来闭合及注释多余的代码。
SQL注入工具
- SQLMap:自动检测和利用SQL注入漏洞
- Pangolin:拥有更人性化的GUI
防止SQL注入
- 有输入的地方就有风险
- 严格的数据类型(主要针对ASP PHP JS等弱类型语言)
- 特殊字符转义
- 使用预编译语句 (最推荐)
- 框架技术
- 存储过程
上传漏洞
解析漏洞
-
IIS6.0解析漏洞
-
当建立
*.asa
*.asp
格式的文件夹时,期目录下的任意文件都将被当做asp文件来解析 - 当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行
-
当建立
-
Apache解析漏洞
- 在碰到不认识的扩展名时(1.php.rar.xs.aa),将会从后向前解析,直到碰到认识的扩展名为止,如果都不认识则会暴露其源码
-
PHP CGI解析漏洞
-
PHP的配置文件中有一个关键的选项
cgi.fi:x_pahtinfo
,在开启时如果访问 http://example.com/1.jpg/xx.php 如果xx.php是不存在的文件,则会向前递归解析1.jpg,把1.jpg当做 php 脚本解析
-
PHP的配置文件中有一个关键的选项
绕过上传漏洞
- 客户端检测 仅仅通过Javascript在客户端检测来拒绝非法文件上传是不专业的,客户端验证是防止用户输入错误,而服务端验证才是防御攻击者
-
服务端检测
- 验证文件扩展名(白名单和黑名单)
- MIME验证
- 目录验证:允许用户将文件放到指定的文件夹,有些开发人员会判断如果目录不存在则创建目录
- 截断上传攻击
修复上传漏洞
- 严格过滤目录
- 文件需要重命名
XSS跨站脚本漏洞
攻击者在网页中嵌入客户端脚本,当用户使用浏览器浏览被嵌入恶意代码的网页时,恶意代码会在用户的浏览器上执行。恶意代码可以获取用户的Cookiee、改变网页内容、URL跳转。
XSS类型
- 反射性XSS,用户访问一个带有XSS代码的URL请求时,服务单接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后,最终造成XSS漏洞
- 存储型XSS,攻击者提交一段XSS代码后,呗服务端接收呗存储,当攻击者再次访问某个页面时,这段XSS代码被读取出来并相应给浏览器,造成XSS跨站攻击。
- DOM XSS: Javascript根据url参数操作DOM,如果url参数被嵌入恶意的XSS代码,那么Javascript也可能会执行恶意代码,DOM型CSS是不需要和服务端交互的。
检测XSS
- 手工检测: 考虑哪里有输入、输入的数据在哪里输出 。
- 全自动检测: XSSER、XSSF
修复XSS漏洞
- XSS形成的原因是对 输入和输出 没有做严格的过滤。
- HttpOnly: 对防御XSS漏洞不起作用,主要是为了解决XSS漏洞后续的Cookiee劫持
命令执行漏洞
攻击者可以随意执行系统命令。
- OS命令执行漏洞:有些Web应用程序提供了一些命令执行的操作,如果没有过滤好用户输入数据则很有可能会形成系统命令执行漏洞。
- 命令执行模型:靠执行脚本代码调用操作系统命令。
文件包含漏洞
PHP所提供的文件包含功能太强大、太灵活,所以包含漏洞经常出现在PHP中。
require、include、require_once、include_once
其它漏洞
CSRF(跨站请求伪造): 攻击者盗用了你的身份(Cookiee),已你的名义进行非法操作。
用户在登录A网站后,A网站将用户的信息写入cookiee中,在会话保持期间攻击者诱骗用户点击攻击网站B,B网页中含有自动向A网站发起请求的代码(这个请求不是用户知情的),而这次请求会带上A网站的cookiee,A网站的服务端校验通过后以为是用户正常的操作请求。
-
如何预防CSRF
- 二次确认,转账操作时要求用户输入二次密码、验证码
- Token认证,不需要用户输入的验证码,每次请求时自动发送到服务端,而且其他网站的脚本是拿不到这个token,没有token就无法构造出合法的请求。
逻辑漏洞
- 业务逻辑出现漏洞,有些权限没有做好,导致用户可以进行他本不应该进行的操作。
- 密码找回漏洞,忘记密码会发送重置密码的请求链接到邮箱,如果这个邮箱攻击者可以随意设置,那么重置密码的链接会可能会发送到攻击者的邮箱。
-
支付逻辑漏洞
- 商品数量为负数
- 指定账户恶意攻击(密码输错三次则锁定账户),预防这种问题最好的办法是不要暴露登录账户,对外仅仅暴露NickName
暴力破解测试
- 不仅密码不能泄露,账户信息也要好好保密
- 数据库一般都有一个默认的账户,SQL Server的sa、 MySQL 的root,一些管理系统的admin账户
- 破解验证码,手机验证码登录时,如果是四位数字验证码,攻击者最多只需要遍历9999次就可以找出验证码。
防止暴力破解
- 密码设置的一定要复杂
- 验证码过滤机器人
- 限制IP、账号操作接口的次数,如果操作连续操作那么僵采取某种措施
旁注攻击+提权
你可以保证你的网站是比较安全的,但是你能保证同一服务器上的所有网站都是安全的吗?
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- ThreadLocal源码深度剖析
- 移动Web深度剖析
- 一文深度剖析 Axios 源码
- Apache HBase内核深度剖析
- Golang WaitGroup 原理深度剖析
- 深度剖析MySQL慢更新问题
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Rails 5敏捷开发
[美] Sam Ruby、[美] Dave Thomas、[美] David Heinemeier Hansson / 安道、叶炜、大疆Ruby技术团队 / 华中科技大学出版社 / 2017-12-30 / 115.00
本书以讲解“购书网站”案例为主线,逐步介绍Rails的内置功能。全书分为3部分,第一部分介绍Rails的安装、应用程序验证、Rails框架的体系结构,以及Ruby语言知识;第二部分用迭代方式构建应用程序,然后依据敏捷开发模式开展测试,最后用Capistrano完成部署;第三部分补充日常实用的开发知识。本书既有直观的示例,又有深入的分析,同时涵盖了Web开发各方面的知识,堪称一部内容全面而又深入浅出......一起来看看 《Rails 5敏捷开发》 这本书的介绍吧!