网络安全基础:常见的Web攻击与防护

admin | 2025-12-09 02:47

网络安全基础:常见的Web攻击与防护

Web应用安全是开发过程中不可忽视的重要方面。本文将介绍几种常见的攻击方式及其防护措施。

SQL注入攻击

SQL注入是通过在输入中插入恶意SQL代码来攻击数据库的手段:

# 不安全的代码
query = f"SELECT * FROM users WHERE username='{username}' AND password='{password}'"

# 安全的代码
from django.db import connection
with connection.cursor() as cursor:
    cursor.execute("SELECT * FROM users WHERE username=%s AND password=%s", [username, password])

跨站脚本攻击(XSS)

XSS攻击通过在页面中注入恶意脚本来窃取用户信息:

# Django模板中自动转义
# {{ user_input }} 自动转义HTML特殊字符

# 手动转义
from django.utils.html import escape
safe_content = escape(user_input)

# 在JavaScript中处理用户输入
const userInput = document.getElementById('input').value;
const safeOutput = userInput.replace(/[<>"'&]/g, function(match) {
  return {
    '&': '&',
    '<': '<',
    '>': '>',
    '"': '"',
    "'": '''
  }[match];
});

跨站请求伪造(CSRF)

CSRF攻击强制用户执行非预期的操作:

# Django中启用CSRF保护
# settings.py
MIDDLEWARE = [
    # ...
    'django.middleware.csrf.CsrfViewMiddleware',
    # ...
]

# 在模板中使用CSRF令牌
<form method="post">
  {% csrf_token %}
  <!-- 表单内容 -->
</form>

# AJAX请求中包含CSRF令牌
$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        xhr.setRequestHeader("X-CSRFToken", $('[name=csrfmiddlewaretoken]').val());
    }
});

安全最佳实践

  1. 始终验证和清理用户输入
  2. 使用参数化查询
  3. 实施适当的身份验证和授权
  4. 定期更新依赖和框架
  5. 使用HTTPS加密传输

安全意识应贯穿整个开发过程。

关于青悟栈

青悟栈是一个专注于技术分享的个人博客,致力于记录学习历程、分享开发经验。

在这里,你可以找到关于编程、技术架构、开发工具等方面的文章。

技术栈
Python
Django
JavaScript
HTML
CSS
MySQL
用户中心