新网站做百度推广 收录,网站推广关键词排名,高校部门网站建设,宣传片广告公司安全测试理论 什么是安全测试#xff1f; 安全测试#xff1a;发现系统安全隐患的过程安全测试与传统测试区别 传统测试#xff1a;发现bug为目的
安全测试#xff1a;发现系统安全隐患什么是渗透测试 渗透测试#xff1a;已成功入侵系统为目标的的攻击过程渗透测试与安全…安全测试理论 什么是安全测试 安全测试发现系统安全隐患的过程安全测试与传统测试区别 传统测试发现bug为目的
安全测试发现系统安全隐患什么是渗透测试 渗透测试已成功入侵系统为目标的的攻击过程渗透测试与安全测测似区别 渗透测试攻击
安全测试防护如何进行安全测试安全测试常用方法 1、代码走读检查代码是否有安全隐患
2、动态渗透
3、扫描程序缓存问题安全测试方面维度 客户端安全 常见分类 XSS跨站脚本攻击
CSRF跨站请求伪造XSS 什么是XSS 跨站脚本cross site script为了避免与前端css混淆改名为xss 攻击者通过改变前端页面元素请求地址或注入JS来获取非法数据cookie。XSS攻击原理 XSS可用攻击页面标签 攻击方式分类 存储型将攻击代码存储到数据库每次打开指定的页面自动加载执行。 场景留言板、注册反射性临时修改页面代码用户打开页面中招。 场景图片、连接XSS攻击步骤 核心查找是否有XSS漏洞 执行scriptalert(123)/script,证明可以执行JS或没有对进行过滤。目的盗取敏感数据如cookie XSS防护策略 将cookie设置只读HttpOnly输入控制禁止输入特殊符号/等输出控制过滤或转义特殊符号的输出 总结 XSS安全测试解决什么问题 避免客户端被注入恶意JS程序或修改标签链接地址导致数据丢失或访问黑客网站XSS测试人员使用的步骤 1、验证码页面是否屏蔽了JS的注入
2、如果存在JS注入提醒开发防护策略CSRF(跨站攻击)
什么是CSRF
CSRF(Cross-site request forgery)是指跨站请求伪造攻击目的 原理 攻击操作步骤
1、获取删除或修改网站数据的接口
2、在黑客网站上生成一个删除或修改链接领取优惠券
3、黑客在要攻击的网站上生成一个跳转到黑客网站的链接(优惠活动)
4、用户在黑客网站上领取优惠券测试CSRF步骤
检查项目是否对请求头-HTTP Referer做校验。后台判断是操作请求来源只能是自己的网站。防御 HTTP Referer:请求头来源的显示从哪个点击链接访问会记录链接访问的地址。网络安全
协议加密
数据加密
数据签名
DOS攻击协议加密常用HTTPS协议基于HTTP协议之上进行加密传输和证书策略
1、数据完整性
2、数据保密性
3、安全校验数据加密
数据加密md5/AES/DES/自定义数据签名
特点对请求数据生成一个无法伪造的字符串发送给服务器。Dos攻击 目的让目标计算机或网络无法提供正常的服务或资源访问使目标系统停止响应甚至崩溃。 防御
1、请求添加访问时间戳服务器进行判断是否在有效期内如果在处理否则不处理。
2、指定时间内控制请求参数(百度-1秒之内3次)
3、流量限制(验证码-越模糊越好)用户安全策略
密码登录①session②token
其他登录密码 提示
1、密码纯6位数字有10**6
2、密码纯8位数字有10**8session 说明密码登录成功后服务器可以生成session|token|cookie等认证方式来进行后续认证处理。特点session一次会话会话结束session关闭危害如果在session会话有效期内session被盗取那么后果是很可怕的相当于账号密码泄露 防护策略 在一定时间后后台关闭session相同用户只能生成1个对象当用户客户端发生变化浏览器、ip发生改变时要求用户重新登录养成好的习惯用户退出后及时清除session信息
其他登录策略
多因素策略 提示多因素策略一般根据项目类型来定暴力破解
说明理论来说是密码就一定可以通过多次尝试来进行破译这种称为暴力破解。提示暴力破解一般使用密码字典结合自动化程序来实施。防护 权限安全漏洞 危害容易出现越权操作查看别人信息、删除他人的信息、查看核心数据 分类
提示权限漏洞主要验证垂直权限基于用户角色设置权限水平权限暂时无法验证越权示例
张三删除李四的留言信息防护
服务端在执行操作之前需要验证权限。应用服务器安全
安全漏洞分类
1、SQL注入项目数据库
2、文件上传针对应用服务器代码SQL注入
说明sql注入顾名思义就是通过页面输入sql语句达到特定的目的危害数据库丢失意味攻击者可以用任何人的账号进行违规操作原理 攻击步骤
1、在页面输入框中查找注入点
2、注入sql语句
3、通过sql语句获取项目库名、表名、字段名
4、通过Mysql数据库自己的库获取项目库中所有的表、字段、数据安全测试sql注入,查找注入点
1、方式1手动在输入框中输入,看提示信息。如果提示相关sql报错信息且是语句拼接方式说明可以sql注入
2、方式2使用专业的工具进行扫描sql注入防护
1、对用户的输入数据进行校验
2、不要动态拼接SQL,使用参数化语句
3、不要使用管理员权限的数据库连接为每个应用使用单独的权限进行数据库连接
4、不要把敏感数据直接保存到数据库中
5、应用的异常信息应该给出尽可能少的提示最好使用自定义的错误信息对原始错误信息进行包装。应用服务器文件上传漏洞
危害 获取正向web项目的目录和文件源代码暴露原理 1、利用上传功能上传恶意文件2、执行恶意文件3、获取项目源代码 防护 数据库安全
安全防护策略
数据库备份和恢复
敏感数据加密
审计追踪机制
认证和权限控制数据备份和恢复
数据库必须有备份正常1天1个备份敏感数据加密
用户数据在传输和存储过程都需要进行加密审计追踪机制
对数据库操作尤其是删除、修改、新增操作必须有日志记录认证和权限控制
不能给root权限
文件操作必须有权限控制接口加解密
加解密说明 思考如果要对加解密怎么做
1、找开发拷贝加密和解密工作
2、确定工具如何使用如何加密、如何解密
3、明确请求示例请求参数格式及使用接口-案例
案例
接口说明登录接口
请求方法POST
请求参数类型form
url:http://mobile-p2p-test.itheima.net/phone/member/login
请求参数
data{
member_name:13012345678,
password:test123
}未加密解密
import requests
urlhttp://mobile-p2p-test.itheima.net/phone/member/login
data{member_name:13012345678,password:test123
}
resultrequests.post(url,datadata)
print(result.json())加解密应用示例
步骤
1、找开发拷贝加密和解密工作
2、确定工具如何使用如何加密、如何解密
3、明确请求示例请求参数格式及使用1、加解密工具 2、确定工具如何使用 3、明确请求示例 加解密应用示例
import requests
from EncryptUtil import EncryptUtil
urlhttp://mobile-p2p-test.itheima.net/phone/member/login
data{member_name:13012345678,password:test123
}
# 1、对请求参数进行加密
diyou EncryptUtil.get_diyou(data)
# 2、对加密后的数据进行签名
xmdy EncryptUtil.get_xmdy(diyou)
# 3、调用请求 参数格式xmdy:签名,diyou:加密后的数据
resultrequests.post(url,data{xmdy:xmdy,diyou:diyou})
# 4、响应数据解密
diyou result.json().get(diyou)
print(-- * 50)
print(解密后的数据,EncryptUtil.aes_decrypt(diyou))EncryptUtil.py
import base64
import hashlib
import json
import refrom Crypto.Cipher import AES# 加解密工具类
class EncryptUtil:# 发送请求时加密密码SEND_AES_KEY ;3jm$/p-ED^cVz_j~.KVV)k9jn,UAH# 发送请求时签名密钥SEND_SIGN_KEY DY34fdgsWET#$%wg#4fgd345sg# 接收数据时解密密钥RECEIVE_AES_KEY 54Ms5bkE6UEdyrRviJ0![OR]gi79x]kstaticmethoddef padding_pkcs5(value):BS AES.block_sizereturn str.encode(value (BS - len(value) % BS) * chr(BS - len(value) % BS))# 替换空字符staticmethoddef replace_blank(str_data):str_data re.compile(\t|\r|\n).sub(, str_data)print(replace_blank str_data, str_data)return str_datastaticmethoddef aes_encrypt(key, data):AES加密:param key: 密钥:param data: 待加密数据:return: 加密后数据data base64.encodebytes(data.encode()).decode()# 替换特殊字符data EncryptUtil.replace_blank(data)print(data, data)# 初始化加密器aes AES.new(key.encode(), AES.MODE_ECB)# 加密padding_value EncryptUtil.padding_pkcs5(data)encrypt_aes aes.encrypt(padding_value)# 用base64转成字符串形式encrypted_text base64.encodebytes(encrypt_aes).decode()return encrypted_textstaticmethoddef aes_decrypt(key, data):AES解密:param key: 密钥:param data: 待解密数据:return: 解密后数据# 初始化加密器aes AES.new(key.encode(), AES.MODE_ECB)# 优先逆向解密base64成bytesbase64_decrypted base64.decodebytes(data.encode())# 执行解密decrypted_bytes base64.decodebytes(aes.decrypt(base64_decrypted))# 转换为字符串decrypted_text str(decrypted_bytes, encodingutf-8)# 把Unicode转成中文result decrypted_text.encode().decode(unicode_escape)return resultstaticmethoddef md5value(data):print(md5value data, data)md5 hashlib.md5()md5.update(data.encode())return md5.hexdigest()# 加密调用staticmethoddef get_diyou(data):# 把字典转换为JSON字符串if isinstance(data, dict):data json.dumps(data)aes_encrypt_data EncryptUtil.aes_encrypt(EncryptUtil.SEND_AES_KEY, data)return EncryptUtil.replace_blank(aes_encrypt_data)# 签名调用staticmethoddef get_xmdy(data):return EncryptUtil.md5value(EncryptUtil.SEND_SIGN_KEY EncryptUtil.replace_blank(data) EncryptUtil.SEND_SIGN_KEY)# 解密调用staticmethoddef decrypt_data(data):return EncryptUtil.aes_decrypt(EncryptUtil.RECEIVE_AES_KEY, data)if __name__ __main__:# 加密send_data {}content json.dumps(send_data)diyou EncryptUtil.get_diyou(content)print(diyou, diyou)xmdy EncryptUtil.get_xmdy(diyou)print(xmdy, xmdy)加密解密标准
说明加密标准常用美国联邦政府高级密码标准AES安装
pip install pycryptodome3.9.6 -i https://pypi.douban.com/simple提示拿到工具如果报错提示缺少库需要跟开发确定安装的依赖库。