6个常见的 PHP 安全性攻击

了解常见的PHP应用程序安全威胁,可以确保你的PHP应用程序不受攻击。因此,本文将列出 6个常见的 PHP 安全性攻击,欢迎大家来阅读和学习。 

1、SQL注入 

SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行。还有一种是通过system()或exec()命令注入的,它具有相同的SQL注入机制,但只针对shell命令。 
01 $username = $_POST['username'];
02 $query = "select * from auth where username = '".$username."'";
03 echo $query;
04 $db = new mysqli('localhost', 'demo', ‘demo', ‘demodemo');
05 $result = $db->query($query);
06 if ($result && $result->num_rows) {
07     echo "<br />Logged in successfully";
08 } else {
09     echo "<br />Login failed";
10}


上面的代码,在第一行没有过滤或转义用户输入的值($_POST['username'])。因此查询可能会失败,甚至会损坏数据库,这要看$username是否包含变换你的SQL语句到别的东西上。 

防止SQL注入 

选项: 

  • 使用mysql_real_escape_string()过滤数据
  • 手动检查每一数据是否为正确的数据类型
  • 使用预处理语句并绑定变量


使用准备好的预处理语句 

  • 分离数据和SQL逻辑
  • 预处理语句将自动过滤(如:转义)
  • 把它作为一个编码规范,可以帮助团队里的新人避免遇到以上问题

 

01 $query = 'select name, district from city where countrycode=?';
02 if ($stmt = $db->prepare($query) )
03{
04     $countrycode = 'hk';
05     $stmt->bind_param("s", $countrycode); 
06     $stmt->execute();
07     $stmt->bind_result($name, $district);
08     while ( $stmt ($stmt->fetch() ){
09         echo $name.', '.$district;
10         echo '<br />';
11     }
12     $stmt->close();
13}


2、XSS攻击 

XSS(跨站点脚本攻击)是一种攻击,由用户输入一些数据到你的网站,其中包括客户端脚本(通常JavaScript)。如果你没有过滤就输出数据到另一个web页面,这个脚本将被执行。 

接收用户提交的文本内容 
01<?php
02 if (file_exists('comments')) {
03     $comments = get_saved_contents_from_file('comments');
04 } else {
05     $comments = '';
06}
07
08 if (isset($_POST['comment'])) {
09     $comments .= '<br />' . $_POST['comment'];
10     save_contents_to_file('comments', $comments);
11}
12>


输出内容给(另一个)用户 

1 <form action='xss.php' method='POST'>
2Enter your comments here: <br />
3 <textarea name='comment'></textarea> <br />
4 <input type='submit' value='Post comment' />
5</form><hr /><br />
6
7 <?php echo $comments; ?>


将会发生什么事? 

  • 烦人的弹窗
  • 刷新或重定向
  • 损坏网页或表单
  • 窃取cookie
  • AJAX(XMLHttpRequest)


防止XSS攻击 

为了防止XSS攻击,使用PHP的htmlentities()函数过滤再输出到浏览器。htmlentities()的基本用法很简单,但也有许多高级的控制,请参阅 XSS速查表。 

3、会话固定 

会话安全,假设一个PHPSESSID很难猜测。然而,PHP可以接受一个会话ID通过一个Cookie或者URL。因此,欺骗一个受害者可以使用一个特定的(或其他的)会话ID 或者钓鱼攻击。 

 

4、会议捕获和劫持 

这是与会话固定有着同样的想法,然而,它涉及窃取会话ID。如果会话ID存储在Cookie中,攻击者可以通过XSS和JavaScript窃取。如果会话ID包含在URL上,也可以通过嗅探或者从代理服务器那获得。 

防止会话捕获和劫持  
  • 更新ID
  • 如果使用会话,请确保用户使用SSL


5、跨站点请求伪造(CSRF) 

CSRF攻击,是指一个页面发出的请求,看起来就像是网站的信任用户,但不是故意的。它有许多的变体,比如下面的例子: 
1 <img src='http://example.com/single_click_to_buy.php?user_id=123&item=12345'>


防止跨站点请求伪造 

一般来说,确保用户来自你的表单,并且匹配每一个你发送出去的表单。有两点一定要记住: 

  1. 对用户会话采用适当的安全措施,例如:给每一个会话更新id和用户使用SSL。
  2. 生成另一个一次性的令牌并将其嵌入表单,保存在会话中(一个会话变量),在提交时检查它。


6、代码注入 

代码注入是利用计算机漏洞通过处理无效数据造成的。问题出在,当你不小心执行任意代码,通常通过文件包含。写得很糟糕的代码可以允许一个远程文件包含并执行。如许多PHP函数,如require可以包含URL或文件名,例如: 
01<form>Choose theme:
02     <select name = theme>
03         <option value = blue>Blue</option>
04         <option value = green>Green</option>
05         <option value = red>Red</option>
06     </select>
07     <input type = submit>
08</form>
09<?php
10     if($theme) {
11         require($theme.'.txt');
12     }
13?>


在上面的例子中,通过传递用户输入的一个文件名或文件名的一部分,来包含以"http://"开头的文件。 

防止代码注入 

  • 过滤用户输入
  • 在php.ini中设置禁用allow_url_fopen和allow_url_include。这将禁用require/include/fopen的远程文件。

  
其他的一般原则 

1. 不要依赖服务器配置来保护你的应用,特别是当你的web服务器/ PHP是由你的ISP管理,或者当你的网站可能迁移/部署到别处,未来再从别处迁移/部署在到其他地方。请在网站代码中嵌入带有安全意识的检查/逻辑(HTML、JavaScript、PHP,等等)。   
2. 设计服务器端的安全脚本: 
—例如,使用单行执行 - 单点身份验证和数据清理   
—例如,在所有的安全敏感页面嵌入一个PHP函数/文件,用来处理所有登录/安全性逻辑检查 
3. 确保你的代码更新,并打上最新补丁。 

Mac上除了Homebrew,这几种安装ADB的方法你可能也需要知道(含手动配置避坑) 本文全面解析Mac上五种ADB安装方案,从Homebrew到手动配置,涵盖常见问题解决与环境变量配置。特别针对macOS High Sierra等老旧系统提供专属解法,帮助开发者高效安装Android Debug Bridge(ADB),避免常见陷阱,提升开发效率。 阅读详情

相关推荐

多租户Saas架构设计分析(基础篇)

本篇先给大家介绍一下相关的概念和常见问题。 实践篇链接:https://blog.youkuaiyun.com/haponchang/article/details/104246317 SaaS简介 SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。...

haponchang的博客 1万+

6个PHP常见的安全性攻击

了解常见的PHP应用程序安全威胁,以便确保你的PHP应用程序不受攻击。在这里呢,博主给大家分享6个常见的PHP安全攻击,也为了方便大家的学习。 1、SQL注入 SQL注入是一种恶意攻击,也是我们常见的一种攻击方式。用户利用在表单字段输入SQL语句的方式来影响SQL语句的正常运行,还有一种就是通过system()或者exec()命令注入,它具有相同的SQL注入机制,但是呢,这个只是针对she...

zalan01408980的博客 1026

西门子S7-1200PLC PID_Temp工艺指令在恒温控制中的实战应用

本文详细介绍了西门子S7-1200PLC中PID_Temp工艺指令在恒温控制系统中的实战应用。从硬件选型、安全接线,到TIA Portal软件组态、编程及核心PID_Temp指令调用,手把手指导搭建系统。重点讲解了利用指令自带的预调节与精确调节功能进行PID参数自整定,最终实现高精度、低波动的温度控制,适用于塑料成型、食品烘烤等多种工业场景。

i1j2k的博客 234

安全攻击分为哪些?

一种有用的划分安全攻击的方法是使用被动攻击和主动攻击的划分方法。 1.被动攻击 被动攻击的本质就是窃听和监听数据传输。攻击者的目标是获取传输的数据信息。被动攻击的两种形式是消息内容泄露攻击和流量分析攻击。 1.1消息内容泄露 这个我们很容易理解,电话交谈,电子邮件消息和传输文件中都有可能包含敏感或机密的信息。我们需要阻止攻击者获取这些信息。 1.2流量分析 流量分析攻击更加的巧妙,假设有一种方法可...

irose的博客 7963

自动驾驶感知融合算法拆解:从华为MDC案例看前融合与大融合的工程实现

本文深度解析了华为MDC平台在自动驾驶感知融合算法中的前沿工程实践,重点探讨了Camera-Lidar前融合与多传感器大融合的架构设计。通过异构融合架构、数据流优化和场景化应用,华为MDC平台实现了高效、安全的感知能力,显著提升了自动驾驶系统的性能与可靠性。

weixin_29198045的博客 534

人形机器人人机交互解决方案(2026完整版)

《人形机器人人机交互解决方案(2026完整版)》摘要 本项目针对2026年人形机器人产业爆发式增长需求,提出了一套完整的人机交互解决方案。方案包含十大核心模块(语音识别、情感识别、手势识别等),采用五层架构设计,实现多模态融合交互,响应时间≤32ms,准确率≥99%。覆盖制造业巡检、家庭服务等10大场景,适配20+主流机型。项目总投资4.1亿元,预期年营收8.2亿元,将申请专利120项,培养专业人才300人。通过技术创新解决当前交互体验生硬、安全可控性不足等痛点,助力我国人形机器人产业实现从"跟跑

随读手记 774

PHP 安全问题入门:10 个常见安全问题 + 实例讲解

相对于其他几种语言来说, PHP 在 web 建站方面有更大的优势,即使是新手,也能很容易搭建一个网站出来。但这种优势也容易带来一些负面影响,因为很多的 PHP 教程没有涉及到安全方面的知识。

fly_enum的博客 612

使用lighttpd和开发板进行交互

本文介绍了如何在嵌入式开发板上使用Lighttpd Web服务器实现硬件交互功能。主要内容包括:Lighttpd通过CGI程序间接控制硬件的基本原理;lighttpd.conf配置文件的详细解析;开发板文件目录结构设计;用C语言编写控制GPIO的CGI程序示例;网页调用CGI实现按钮触发控制的HTML代码;常见问题调试建议。最后通过效果图展示了网页按钮点击后成功控制LED灯的实际效果,验证了Lighttpd+CGI方案在嵌入式设备Web控制中的可行性。

m0_49476241的博客 1423

PHP常见的6种安全性攻击

了解常见的PHP应用程序安全威胁,可以确保你的PHP应用程序不受攻击。因此,本文将列出 6个常见的 PHP 安全性攻击,欢迎大家来阅读和学习。   1、SQL注入  SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行。还有一种是通过system()或exec()命令注入的,它具有相同的SQL注入机制,但只针对shell命令。$username = $_POST[

John 424

基于STM32单片机设计的智能水温控制系统

本项目研究并实现了一种基于STM32单片机的智能水温控制系统。系统以STM32F103RCT6作为主控制器,通过DS18B20温度传感器实时采集水温数据,利用PID控制算法精确调节5V直流防水型70W加热棒的功率输出,确保水温恒定在设定范围内。此外,采用OLED显示屏显示当前水温和预设上限阀值,并集成ESP8266-WiFi模块与自研Android手机APP进行远程通信和控制。用户可通过本地按键或手机APP设置温度阀值,实现实时监控与智能化管理。整个系统设计旨在提高水资源利用效率,提升生活及工业用水环境的舒

8789

嵌入式工程师必学(9):USB 3.0协议理解

USB3.0和USB2.0相比,在线缆上从4根线(Vbus、GND、D+、D-)变为了8根线(Vbus、GND、D+、D-、SSRX+\SSRX-\SSTX+\SSTX-),可见增加的4根线都是和超速相关的,新增加的超速有两类,分别为:超速Gen1(5.0Gbps),超速+Gen2(10Gbps),还兼容USB2.0的3类速率:low-speed(1.5Mbps),full-speed(12Mbps),andhigh-speed(480Mbps)。从设计可以看出,USB3....

码农17年的博客 1万+
上一篇: java中equals和==的区别
下一篇: 代码之 DRY
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值