-
SQL 注入(SQL Injection)
描述:SQL 注入攻击通过将恶意 SQL 代码注入到应用程序的输入中,试图操控数据库查询的执行方式,达到非法访问或操作数据库的目的。
影响:攻击者可以获取、篡改或删除数据库中的敏感数据,甚至在某些情况下控制整个数据库,导致信息泄露、数据损坏或丢失。
防御措施:
使用预处理语句和参数化查询来隔离 SQL 查询和用户输入。
检查和清理输入的类型,确保数值和文本的正确性。
限制数据库用户的权限,避免授予不必要的读写权限。 -
跨站脚本(XSS,Cross-Site Scripting)
描述:XSS 攻击通过向网页注入恶意脚本,当其他用户访问该网页时,脚本会在用户浏览器中执行,进而盗取用户信息或进行恶意操作。
影响:攻击者可获取用户的会话信息、登录凭证,甚至进行钓鱼攻击,进一步损害用户隐私或账户安全。
防御措施:
对用户输入的数据进行转义,特别是 HTML 和 JavaScript 内容,防止脚本执行。
使用内容安全策略(CSP)限制页面可以加载的脚本源,减少外部脚本的风险。
利用 htmlspecialchars() 和 htmlentities() 等函数处理输出,避免 HTML 标签被直接渲染。 -
跨站请求伪造(CSRF,Cross-Site Request Forgery)
描述:CSRF 攻击通过诱导用户在已登录的状态下访问特定链接或提交表单,使得攻击者可以在用户的授权身份下执行恶意操作。
影响:攻击者可以利用用户的权限发起请求,导致账户更改、转账或敏感信息泄露等风险,影响用户账户的完整性和隐私。
防御措施:
使用 CSRF token 进行表单保护,为每次请求生成独特的 token,服务器端进行验证。
检查请求来源头信息(Referer 或 Origin)来验证请求是否来自合法来源。
对关键功能(如账户修改、支付)添加额外身份验证,以防止未经授权的访问。 -
文件包含攻击(File Inclusion)
描述:文件包含攻击(如 RFI 和 LFI)利用不安全的文件加载方式,插入恶意文件或访问服务器上的敏感文件。
影响:攻击者可以访问系统文件,获取敏感配置信息,甚至执行恶意代码,从而控制或损害服务器的安全性。
防御措施:
避免将用户输入直接用于构建文件路径,使用白名单验证文件路径。
限制文件路径为服务器的特定目录,并启用绝对路径防止目录遍历。
禁用 allow_url_include,防止通过远程文件包含执行代码。 -
Session 固定攻击(Session Fixation)
描述:Session 固定攻击是通过强迫用户使用攻击者指定的会话 ID,登录后攻击者即可利用相同会话 ID 冒充用户身份。
影响:攻击者可以未经授权地使用受害者的账户权限执行敏感操作,导致数据泄露、权限滥用。
防御措施:
在用户登录后重新生成会话 ID,确保会话是用户特定的。
启用 HttpOnly 和 Secure 标志,确保会话 Cookie 只能通过 HTTPS 传输且无法被 JavaScript 访问。
配置适当的会话过期时间,避免长期保持会话有效。 -
会话劫持(Session Hijacking)
描述:会话劫持是指攻击者窃取用户的会话 ID,通过伪装成用户的身份访问系统。
影响:攻击者可以完全冒充用户身份,访问用户账户、进行交易或更改账户信息,导致数据泄露和隐私侵犯。
防御措施:
启用 HTTPS,确保会话 ID 在传输过程中被加密,避免网络窃听。
使用 HttpOnly 和 Secure 标志,增加会话 Cookie 的安全性。
定期生成新的会话 ID,在关键操作(如登录、权限提升)后刷新会话 ID。 -
文件上传漏洞
描述:文件上传漏洞是指攻击者通过上传恶意文件(如可执行文件或脚本),在服务器上执行非法操作,导致系统被入侵或数据泄露。
影响:攻击者可能通过恶意文件执行代码、访问数据库、窃取数据或删除文件,导致服务器受到重大损害。
防御措施:
限制上传文件的类型和大小,避免执行文件(如 .php)被上传。
将上传的文件存储在非 Web 可直接访问的目录中,防止直接执行。
验证文件的 MIME 类型和内容,确保上传内容符合预期。