首页 php教程 php手册 6个常见的php安全攻击

6个常见的php安全攻击

Jun 06, 2016 pm 07:54 PM
http php 安全 常见 攻击

http://blog.csdn.net/czhphp/article/details/9673607 1、SQL注入 SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行。还有一种是通过system()或exec()命令注入的,它具有相同的SQL注入机制,但只针对shell命令。 [php] view

http://blog.csdn.net/czhphp/article/details/9673607


1、SQL注入 

SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行。还有一种是通过system()或exec()命令注入的,它具有相同的SQL注入机制,但只针对shell命令。

[php] view plaincopy

  1. $username = $_POST['username'];  
  2. $query = "select * from auth where username = '".$username."'";  
  3. echo $query;  
  4. $db = new mysqli('localhost''demo', ‘demo', ‘demodemo');  
  5. $result = $db->query($query);  
  6. if ($result && $result->num_rows) {  
  7.     echo "
    Logged in successfully"
    ;  
  8. else {  
  9.     echo "
    Login failed"
    ;  
  10. }  

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

防止SQL注入 

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

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

[php] view plaincopy

  1. $query = 'select name, district from city where countrycode=?';  
  2. if ($stmt = $db->prepare($query) )  
  3. {  
  4.     $countrycode = 'hk';  
  5.     $stmt->bind_param("s"$countrycode);    
  6.     $stmt->execute();  
  7.     $stmt->bind_result($name$district);  
  8.     while ( $stmt ($stmt->fetch() ){  
  9.         echo $name.', '.$district;  
  10.         echo '
    '
    ;  
  11.     }  
  12.     $stmt->close();  
  13. }  

2、XSS攻击 

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

接收用户提交的文本内容 

[php] view plaincopy

  1. if (file_exists('comments')) {  
  2.     $comments = get_saved_contents_from_file('comments');  
  3. else {  
  4.     $comments = '';  
  5. }  
  6.   
  7. if (isset($_POST['comment'])) {  
  8.     $comments .= '
    '
     . $_POST['comment'];  
  9.     save_contents_to_file('comments'$comments);  
  10. }  
  11. >  

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

[php] view plaincopy

  1. 'xss.php' method='POST'>  
  2. Enter your comments here: 
      

  3.   
  4. 'submit' value='Post comment' />  


  5.   
  6.   
  7. echo $comments; ?>  

将会发生什么事? 
  • 烦人的弹窗
  • 刷新或重定向
  • 损坏网页或表单
  • 窃取cookie
  • AJAX(XMLHttpRequest)

防止XSS攻击 

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

3、会话固定 

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

6个常见的php安全攻击

4、会议捕获和劫持 

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

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

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

CSRF攻击,是指一个页面发出的请求,看起来就像是网站的信任用户,但不是故意的。它有许多的变体,比如下面的例子: 

[xml] view plaincopy

  1. img src='http://example.com/single_click_to_buy.php?user_id=123&item=12345'>  

防止跨站点请求伪造 

一般来说,确保用户来自你的表单,并且匹配每一个你发送出去的表单。有两点一定要记住: 
  1. 对用户会话采用适当的安全措施,例如:给每一个会话更新id和用户使用SSL。
  2. 生成另一个一次性的令牌并将其嵌入表单,保存在会话中(一个会话变量),在提交时检查它。

6、代码注入 

代码注入是利用计算机漏洞通过处理无效数据造成的。问题出在,当你不小心执行任意代码,通常通过文件包含。写得很糟糕的代码可以允许一个远程文件包含并执行。如许多PHP函数,如require可以包含URL或文件名,例如:

[php] view plaincopy

  1. Choose theme:  
  2.     
  3.           
  4.           
  5.           
  6.       
  7.       
  8.   
  9.     if($theme) {  
  10.         require($theme.'.txt');  
  11.     }  
  12. ?>  

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

防止代码注入 
  • 过滤用户输入
  • 在php.ini中设置禁用allow_url_fopen和allow_url_include。这将禁用require/include/fopen的远程文件。
  
其他的一般原则 

1. 不要依赖服务器配置来保护你的应用,特别是当你的web服务器/ PHP是由你的ISP管理,或者当你的网站可能迁移/部署到别处,未来再从别处迁移/部署在到其他地方。请在网站代码中嵌入带有安全意识的检查/逻辑(HTML、JavaScript、PHP,等等)。  
2. 设计服务器端的安全脚本: 
—例如,使用单行执行 - 单点身份验证和数据清理   
—例如,在所有的安全敏感页面嵌入一个PHP函数/文件,用来处理所有登录/安全性逻辑检查 
3. 确保你的代码更新,并打上最新补丁。
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

CakePHP 项目配置 CakePHP 项目配置 Sep 10, 2024 pm 05:25 PM

在本章中,我们将了解CakePHP中的环境变量、常规配置、数据库配置和电子邮件配置。

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

为了在 cakephp4 中处理日期和时间,我们将使用可用的 FrozenTime 类。

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

在本章中,我们将学习以下与路由相关的主题?

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 创建验证器 CakePHP 创建验证器 Sep 10, 2024 pm 05:26 PM

可以通过在控制器中添加以下两行来创建验证器。

See all articles