1.1.1. 网络安全


XSS 攻击

XSS 也叫跨脚本攻击(Cross Stie Scriping),攻击者会在 web 网页中插入恶意的 JS 代码,当用户浏览该页时,恶意代码就会被执行,达到攻击者目的。

如:在 form 表单中加入超链接标签,跳转到恶意网站。

\\XSS反射演示
<form action="" method="get">
    <input type="text" name="xss"/>
    <input type="submit" value="test"/>
</form>
<?php
$xss = @$_GET['xss'];
if($xss!==null){
    echo $xss;
}

然后输入,一个 js 代码,比如

<script>alert('hack')</script>

输入之后点击 test: 插入的内容就变成 script 标签了。

数据流向:浏览器 -> 后端 -> 浏览器。

预防办法:

  1. 对用户提交的数据进行过滤
  2. 网页显示数据时,对数据进行处理使用 htmlspecialchars() 进行输出。
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // &lt;a href=&#039;test&#039;&gt;Test&lt;/a&gt;
?>

XSS跨站脚本攻击(一)----XSS攻击的三种类型

SQL 注入

SQL 语句中没有过滤传入的参数,篡改了 SQL 语句,达到攻击的目的。 如:

select * from user where name='abc' and password='123';
# 攻击者使用传入 password 为 ' or 1=1;
select * from user where name='abc' and password='' or 1=1;
# 或者使用 # 或 -- ,输入完用户名后直接跟 # 号或者双横线,后面密码任意,即注释了密码。
select * from user where name='abc'#' and password='123123';

预防:

  1. 严格校验参数,正则等。
  2. 转义特殊字符,使用 addslashes()。
  3. 利用 PDO 的预编译机制。可以理解为整体替换
    • 如果 $name 变量包含了’Sarah’; DELETE FROM employees 这个结果只会简单的搜索字符串“‘Sarah’; DELETE FROM employees”,所以你不会得到一张空表。

CSRF 攻击

CSRF 跨站请求伪造。

  • 登录受信任的网站 A,并在本地生成了 cookie。
  • 再不登出 A 的情况下,访问了危险网站 B。
  • B 网站以用户身份访问 网站 A ,并执行恶意请求。

预防:

  1. CSRF-TOKEN:该令牌用于验证用户是否是向应用程序发送请求的用户。
Copyright © Kagami丶 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-12-10 21:47:13

results matching ""

    No results matching ""