Skip to content

研发安全攻防总览

一、编码规范和安全工具推荐

1、编码规范

  • 简易性原则
  • 清晰性原则
  • 健壮性原则
  • 最小权限原则
  • 代码数据分离原则
  • 组件重用原则
  • 内存安全原则

2、安全工具

  • 奇安信
  • XRAY
  • 盛邦
  • Nmap
  • Nessus
  • OpenVAS

二、安全攻防

1、web漏洞防护

暴力破解密码

  • 强密码
  • 尝试次数限制
  • 强人机验证
  • 定期修改

敏感信息明文

  • https
  • 加密传输
  • 加密存储

越权

  • 最小化权限
  • 验证输入
  • 接口控制

短信炸弹

  • 限制手机 | ip 访问次数
  • 限制手机号发送时间间隔
  • 页面验证码

绕过权限

  • 严格判断用户数据的用户访问身份
  • 重要功能严格校验权限级别
  • 认证和操作放在同一客户端请求
  • 认证标识和用户强绑定,阅后即焚

2、WEB攻击

跨站脚本攻击(XSS)

攻击者通过在网页中插入恶意脚本代码,当用户浏览该页面时,这些恶意脚本会被执行,从而达到攻击的目的。例如<script>alert('XSS');</script>

防护方式:

  • 用户输入的验证和过滤
  • 字符采用HTML实体编码
  • 双端验证类型、格式、长度
  • HTTP响应头中设置X-XSS-Protection,启用浏览器内置防护
  • 在Cookie中设置HttpOnly和Secure标志,防止JavaScript脚本获取Cookie信息
  • 内容安全策略(CSP)通过设置HTTP头来限制可以加载的资源类型和来源

跨站请求伪造(CSRF)

利用用户在目标网站的已登录状态,通过诱使用户访问恶意页面或点击恶意链接,让目标网站执行攻击者构造的恶意请求,从而达到攻击目的

防护方式:

  • 检查HTTP请求头中的Referer字段,确保请求来源与目标网站同域或可信域名
  • 基于令牌(CSRF Token)的验证,通过字定义http头或form表单嵌入token隐藏字段
  • 设置Cookie的SameSite属性,限制跨站请求中Cookie的发送
    Set-Cookie: sessionID=abc123; SameSite=Lax; Secure
    Strict:仅同站点请求携带Cookie。Lax:允许部分安全跨站请求(如导航链接)
  • 双重验证机制:密码+验证码
  • 特定场景单独适配token

命令注入

可以执行系统命令的功能点,用户恶意输入系统命令

防护方式:

  • 强输入验证
  • 最小权限运行
  • 避免系统执行命令

SQL注入

攻击者通过将恶意的SQL代码插入到Web应用程序的输入参数中,从而欺骗服务器执行非授权的SQL命令,达到获取敏感数据、篡改数据或控制数据库的目的。例如:通过get请求删除用户数据http:example.com/user/delete?id=1 or 1=1

防护方式:

  • 参数化查询:使用预编译语句替代动态拼接SQL语句
  • 输入验证:对用户输入进行严格的格式验证,过滤特殊字符
  • 最小权限原则:数据库账户仅授予必要的权限,避免高权限账户连接数据库
  • 使用Web应用防火墙(WAF) :WAF可以检测并阻止潜在的SQL注入攻击
  • 定时审计和更新

文件上传

用户上传可执行文件到服务器,从而实现执行该文件攻击目标服务器的目的。

防护方式:

  • 单独设置文件服务器
  • 上传目录设置为不可执行
  • 判断上传文件类型

服务器端请求伪造(SSRF)

攻击者通过构造恶意请求,利用服务器的功能作为代理向远程或本地服务器发起请求。攻击类型如下: (1)基于协议的SSRF:利用不同协议的特性来实现攻击,例如HTTP、HTTPS、FTP、file等; (2)基于URL参数的SSRF:通过构造特定的URL参数,使服务器发起请求。 (3)基于文件读取的SSRF:利用文件读取功能,读取服务器上的敏感文件。 (4)基于HTTP GET请求的SSRF:通过构造HTTP GET请求,绕过安全限制。

防护方法:

  • 输入验证和过滤:对用户输入进行严格验证,确保只允许合法的请求。
  • 限制请求端口:仅允许访问特定的端口,如HTTP和HTTPS。
  • 黑名单内网IP:阻止对内网IP地址的访问。
  • 禁用不必要的协议:禁用如file://、gopher://等不必要的协议。
  • 使用白名单策略:只允许访问特定的资源和地址。
  • 应用层防火墙和安全插件:使用应用层防火墙和安全插件来检测和阻止恶意请求。
  • 禁止网页非法跳转

反序列化漏洞

在反序列化过程中,应用程序没有对传入的数据进行严格的验证和过滤,攻击者可以通过构造恶意的序列化数据来利用这一过程,从而执行任意代码或命令

防护方法:

  • 避免接受来自不受信任源的序列化数据
  • 进行完整性检查:对传入的序列化数据进行数字签名
  • 在创建对象前强制执行类型约束
  • 记录反序列化失败信息
  • 使用安全的序列化库
  • 加强代码审查

JSON劫持

恶意攻击者通过特定的手段,拦截并窃取原本应返回给用户的JSON数据,这些数据通常包含敏感信息或有价值的数据。

防护方法:

  • 加密敏感数据
  • 使用安全的JSON解析库
  • 通过限制http头限制访问
  • 设置CORS策略:限制跨域请求,确保只有授权的域名可以访问敏感数据

3、服务器攻击

拒绝服务攻击(DOS或DDOS)

发送大量无效请求或恶意数据包来实现,导致目标系统资源耗尽,从而无法处理合法用户的请求,DDOS表示分布式拒绝服务攻击。

防护方式:

  • 使用防火墙
  • 流量清洗
  • 负载均衡
  • CDN加速
  • 启用SYN Cookies
  • 反向代理
  • 限制客户端请求次数
  • 设置流量限制

DNS劫持

DNS负责将域名(如www.example.com)转换为机器可读的IP地址(如192.168.1.1)。用户访问网站时,设备向DNS服务器发送解析请求,服务器返回正确IP以实现访问。

劫持机制:攻击者通过控制网络节点(如路由器)、植入恶意软件或利用协议漏洞,篡改DNS响应数据包,使用户被重定向至恶意服务器。

防护方法:

  • DNSSEC(DNS安全扩展) :通过数字签名验证DNS记录的真实性,防止缓存投毒和响应伪造
  • HTTPS强制与证书验证:网站启用HTTPS,浏览器验证证书合法性,降低中间人攻击风险
  • 网络流量监控
  • 定期检查域名账号信息和解析状态
  • 定期检查网站索引和外部链信息
  • 选择正规DNS服务商