资讯专栏INFORMATION COLUMN

PHP安全性防范方式

chadLi / 3057人阅读

摘要:注入注入是一种恶意攻击,用户利用在表单字段输入语句的方式来影响正常的执行。防范方式是针对非法的代码包括单双引号等,使用函数。如许多函数,如可以包含或文件名防范方式过滤用户输入在中设置禁用和。这将禁用的远程文件。

SQL注入

SQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行。

防范方式

使用mysql_real_escape_string(),或者addslashes()过滤数据

手动检查每一数据是否为正确的数据类型

使用预处理语句并绑定变量

使用准备好的预处理语句

分离数据和SQL逻辑

预处理语句将自动过滤(如:转义)

把它作为一个编码规范,可以帮助团队里的新人避免遇到以上问题

相比于直接执行SQL语句,预处理语句有两个主要优点

预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行)。

绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句。

预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性。

而在PHP当中,使用预处理语句主要有两种方法

使用mysqli数据库

使用PDOStatement类对象

查询只需要被解析(或准备)一次,但可以使用相同或不同的参数执行多次。当查询准备好(Prepared)之后,数据库就会分析,编译并优化它要执行查询的计划。对于复杂查询来说,如果你要重复执行许多次有不同参数的但结构相同的查询,这个过程会占用大量的时间,使得你的应用变慢。通过使用一个预处理语句你就可以避免重复分析、编译、优化的环节。简单来说,预处理语句使用更少的资源,执行速度也就更快。

服务器的措施

关于SQL注入,不得不说的是现在大多虚拟主机都会把magic_quotes_gpc选项打开,在这种情况下所有的客户端GET和POST的数据都会自动进行addslashes处理,所以此时对字符串值的SQL注入是不可行的,但要防止对数字值的SQL注入,如用intval()等函数进行处理。但如果你编写的是通用软件,则需要读取服务器的magic_quotes_gpc后进行相应处理。

XSS攻击

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

防范方式

是针对非法的HTML代码包括单双引号等,使用htmlspecialchars()函数 。

在使用htmlspecialchars()函数的时候注意第二个参数, 直接用htmlspecialchars($string) 的话,第二个参数默认是ENT_COMPAT,函数默认只是转化双引号(“), 不对单引号(‘)做转义.

所以,htmlspecialchars函数更多的时候要加上第二个参数, 应该这样用: htmlspecialchars($string,ENT_QUOTES).当然,如果需要不转化如何的引号,用htmlspecialchars($string,ENT_NOQUOTES).

另外, 尽量少用htmlentities, 在全部英文的时候htmlentities和htmlspecialchars没有区别,都可以达到目的.但是,中文情况下, htmlentities却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。

htmlentities和htmlspecialchars这两个函数对 "之类的字符串支持不好,都不能转化, 所以用htmlentities和htmlspecialchars转化的字符串只能防止XSS攻击,不能防止SQL注入攻击.

代码注入

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

防范方式

过滤用户输入

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

文章参考:
https://blog.csdn.net/tim_php...
https://blog.csdn.net/come_on...
https://www.cnblogs.com/wt645...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29613.html

相关文章

  • PHP网站常见一些安全漏洞及防御方法

    摘要:一常见网站安全漏洞对于的漏洞,目前常见的漏洞有五种。分别是文件漏洞注入漏洞脚本命令执行漏洞全局变量漏洞和文件漏洞。这就是月行胃的注入漏洞。 一、常见PHP网站安全漏洞 对于PHP的漏洞,目前常见的漏洞有五种。分别是Session文件漏洞、SQL注入漏洞、脚本命令执行漏洞、全局变量漏洞和文件漏洞。这里分别对这些漏洞进行简要的介绍。 1、session文件漏洞 Session攻击是黑客最常...

    lavor 评论0 收藏0
  • PHP代码安全策略

    摘要:文件系统安全如果具有权限,且在脚本中允许用户删除文件,那么用户提交数据,不进行过滤,就非常有可能删除系统文件从用户目录中删除指定的文件上面的代码,假设用户提交的值是,那么目录就会被删除防范文件系统攻击,策略如下只给有限的权限用户提交上来的变 文件系统安全 php如果具有root权限,且在脚本中允许用户删除文件,那么用户提交数据,不进行过滤,就非常有可能删除系统文件 上面的代码...

    GT 评论0 收藏0
  • PHP 安全:如何防范用户上传 PHP 可执行文件

    摘要:每个专业的开发者都知道用户上传的文件都是极其危险的。如何防止引入用户上传的文件重命名文件名可以吗不,办不到解析器不关心文件的后缀名。服务器通常被设置成执行文件并将执行结果回复输出。如何进行检查这很简单。用户可以上传文件到该站点。 showImg(https://segmentfault.com/img/remote/1460000017893665?w=1200&h=627); 每个专...

    wangxinarhat 评论0 收藏0
  • PHP 开发者如何做代码审查?

    摘要:我们做代码审计之前选好工具也是十分必要的。一审计工具介绍代码审计系统功能介绍是一款基于开发的针对代码安全审计的软件。自定义审计规则。黑盒敏感信息泄露一键审计。挖掘这种漏洞主要是检查是否使用了,搜索和。 GitChat 作者:汤青松原文:PHP 开发者如何做代码审查?关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 【不要错过文末彩蛋】 前言 工欲善其事,必先利其器。我们做...

    Achilles 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<