高效码农

PHP系列:安全篇

问题与简答

安全篇

跨站脚本攻击(XSS)

跨站脚本攻击(Cross Site Script,简称 XSS),利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序

XSS 示例

$input = $_GET["param"];
echo "<div>" . $input . "</div>";
https://blog.maplemark.cn/test.php?param=这是一个测试!
https://blog.maplemark.cn/test.php?param=<script>alert(/xss/)</script>

XSS 分类

XSS 防御

跨站点请求伪造(CSRF)

跨站请求伪造(Cross-site request forgery,简称 CSRF), 是一种挟制用户在当前已登录的 Web 应用程序上执行非本意的操作的攻击方法

CSRF 示例

https://blog.maplemark.cn/csrf.html

其内容为

<!--仅用于演示,假设该点赞为 GET-->
<img src="https://segmentfault.com/api/article/1190000019050946/like?_=0faa0315ff95872d8b0f8da02e343ac7">

如果你已经访问过 SF 网站,并且已经登录。可以看到在访问页面P之后,已经对 SF 文章进行点赞了

CSRF 防御

SQL 注入

输入的字符串中注入 SQL 指令,若程序当中忽略了字符检查,导致恶意指令被执行而遭到破坏或入侵

SQL 注入示例

$id = $_GET['id'];
$sql = "SELECT * FROM `user` WHERE `id`={$id}";

将传递参数改为

1;DROP TABLE OrdersTable--

SQL 注入防御

应用层拒绝服务攻击

DDOS 简介

DDOS 又称为分布式拒绝服务,全称是 Distributed Denial of Service。DDOS 本是利用合理的请求造成资源过载,导致服务不可用

网络层 DDOS:伪造大量源 IP 地址,向服务器发送大量 SYN 包,因为源地址是伪造的,不会应答,大量消耗服务器资源(CPU 和内存)

应用层 DDOS

应用层 DDOS,不同于网络层 DDOS,由于发生在应用层,因此 TCP 三次握手已完成,连接已建立,发起攻击的 IP 地址都是真实的

PHP 安全

文件包含漏洞

include、require、include_once、require_once,使用这4个函数包含文件,该文件将作为 PHP 代码执行,PHP 内核不会在意该包含的文件是什么类型

代码执行漏洞

危险函数execshell_execsystem可以直接执行系统命令。eval函数可以执行 PHP 代码

伪随机数和真随机数

伪随机数

通过一些数学算法生成的随机数,并非真正的随机数

真随机数

通过一些物理系统生成的随机数

安全随机数

使用 /dev/random 或者 /dev/urandom 来生成随机数,只需读取即可

若是支持 openSSL 扩展,可以直接使用函数来生成随机数

openssl_random_pseudo_bytes ( int $length [, bool &$crypto_strong ] ) : string

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »