2026-02-01 23:18:21
一、SQL注入
SQL注入是发生在应用程序数据库层的安全漏洞。攻击者通过在输入文本中注入SQL指令,若程序未进行适当检查,这些指令将被数据库服务器误认为是正常的SQL指令并执行,从而导致数据泄露或破坏。
SQL注入类型:
数字型注入:通过修改URL中的数字参数,注入SQL指令。例如:
字符串注入:通过修改URL中的字符串参数,注入SQL指令。例如:
终止式SQL注入:通过注入特定的SQL语句终止符,改变原有SQL语句的结构。
SQL注入防范:
使用绑定变量:将用户输入作为参数传递给SQL语句,而非直接拼接。
使用存储过程:通过存储过程执行SQL操作,减少直接拼接SQL的风险。
检查数据类型:对用户输入的数据类型进行严格检查,确保符合预期。
使用安全函数:如ESAPI的编码函数,对输入进行编码处理。
服务端输入校验和输出编码:遵循OWASP的防御方案,对输入进行校验,对输出进行编码。
二、XSS攻击
XSS跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页面时,嵌入的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS类型:
反射式XSS:攻击者通过特定手法诱使用户访问包含恶意代码的URL,恶意代码在受害者主机上的浏览器执行。
存储式XSS:恶意代码被提交并存储在服务器端,当用户访问目标页面时,恶意代码从服务器解析并加载到浏览器执行。
DOM-based型XSS:通过恶意脚本修改页面的DOM结构,纯粹发生在客户端的攻击。
XSS防御:
HTTP响应的X-首部:如X-Frame-Options、X-XSS-Protection、X-Content-Sercurity-Policy等,增强浏览器的安全性。
域分离策略:子域与父域分离,减少风险。
安全传输:使用HTTPS协议,确保数据传输的安全性。
安全cookie:设置cookie属性HttpOnly,防止cookie被JavaScript访问。
验证码:减少非法操作和防止CSRF。
慎防第三方内容:对引用的外部资源(如js文件、HTML文件、flash)进行安全审查。
三、CSRF(跨站请求攻击)
CSRF即跨站请求攻击,攻击者通过技术手段欺骗用户的浏览器去访问一个用户以前认证过的站点并运行一些操作。因为浏览器之前认证过,所以被访问的站点会认为这是真正的用户操作而去运行。
检查HTTP Referer首部是否同域:确保请求来自同一域名。
限制Session Cookie的生命周期:减少CSRF攻击的时间窗口。
使用验证码:在关键操作前要求用户输入验证码。
使用一次性token:为每个用户会话生成唯一的token,并在请求中验证。
四、接口防刷技术
接口防刷技术旨在防止恶意用户通过自动化工具对接口进行频繁请求,从而保护系统的稳定性和安全性。
网关控制流量洪峰:对在一个时间段内出现流量异常的情况,可以拒绝请求。
源IP请求个数限制:对请求来源的IP请求个数进行限制,防止单个IP进行大量请求。
对用户/IP限制提交次数:对单个用户或IP限制每分钟最多提交的次数,并记录到缓存中,下次请求时先检查缓存是否已过期。
HTTP请求首部字段进行校验:如Host、User-Agent、Referer等,确保请求来自合法的客户端。
对用户唯一身份uid进行限制和校验:对uid进行长度、组合方式、有效性等判断,或设置uid的时效性。
前后端协议采用二进制或签名机制:增加数据传输的复杂性和安全性。
人机验证:使用各种验证码(如短信验证码、字符/图片类验证码等)来验证用户的真实性。
通过以上技术,可以有效提升接口的安全性,防止SQL注入、XSS攻击、CSRF以及恶意刷接口等安全问题。