0php提供了许多有用的函数,如SQL注入和XSS攻击。 现在,让我们看一下可以为您的项目添加安全性的函数。 但请注意,这里只是一个常用函数的列表。 他们可能不全面,但我相信他们对你的项目很有用。
安全是编程语言中非常值得关注的一面。 任何成熟的编程语言都有适当的方法,为了保证程序的安全性,现代WEB开发需要处理用户输入。 (这时发生了问题)在编程的格言中,有时不能相信用户输入的安全性。 所以今天我们来介绍一下PHP最常用的保护您的代码安全的方法。
MySQL _ real _ escape _ string (字符串SQL查询) :
转义SQL语句中使用的字符串中的特殊字符,并考虑当前连接的字符集。 有效避免SQL注入的方便函数。
将转换以下字符
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、。
如果在执行sql语句之前对要执行的sql query使用此函数处理,则会在摇篮中消除一些危险。
但是,在目前一般成熟的项目中,建议使用数据库持久层(如PDO )处理所有数据库操作。 他们代表更先进的数据库操作处理技术,安全性、数据读写速度远优于旧的mysql_* api。
addslashes ( ) :
此函数在将某些数据插入数据库时非常有用。 您可以在单引号前加反斜杠,以避免插入资料时发生错误。 然而,其使用是php.ini的设置之一,其与— magic_quotes_gpc相关联
如果PHP magic_quotes_gpc=on,则无需执行addslashes ( )和stripslashes ( )操作即可正常显示数据库字符串数据的输入和输出。
此时,如果addslashes ( )处理输入的数据,则必须在输出时使用stripslashes ( )删除多馀的反斜杠。
PHP magic _ quotes _ GPC =关闭时
您必须使用addslashes ( )处理输入资料,但不需要使用addsslashes ( )格式化输出。 由于addsslashes ( )没有将反斜杠写入数据库,因此mysql只能帮助您完成sql语句的执行。
【stri slashes ( ) :删除由adds slashes ( )函数添加的反斜线。 》和
htmlentities ( ) :
一个非常有用的函数来处理输出。 用于将可能引起XXS攻击的字符转换为html实体。 这些字符在浏览器中显示正常,但在显示源代码时,有些特殊字符实际上不会显示。 例如,如下所示
输出:
约翰&‘ADAMS’
来源:
约翰&'adams ';
输出:
来源:
gt;
编码这些符号可以有效地避免XSS攻击。
htmlspecialchars ( ) :
与上述函数相同,因为htmlentities ( )将html标准中定义的所有字符转换为相应的html实体,因此输出不易读取( html实体列表http://www.w3school.com.cn/tags/cn ) 因此,只需使用htmlspecialchars ( )将预定义字符(引起问题的字符)转换为html实体即可。 例如
& (和符号)是&
(双引号)为
(单引号)是“”
成为(小于) (大于)
因此,有些项目经常使用htmlspecialchars ( )来处理html输出。 他在安全方面做得更具体些。
strip_tags ( ) :通常在输出时使用,并清除HTML、XML和PHP标记。
函数原型: strip_tags(string,allow )
String表示输入的字符串,allow表示不被删除的标签。 allow允许您定义要筛选的标签
md5 ( ) :
将字符串转换为32位哈希值的函数(不能反向解码),使用此函数可以获得唯一的32位字符串。 但是,当您使用此函数时,您需要使用暴力枚举解密密码,因为您需要注意数据库记录了大量的md5值,因此在使用此函数时,首先加密原始字符串,然后使用md5( )散列可以获得更好的效果。 sha1 ( ) :
与md5 ( )类似的函数,但他使用不同的算法生成40个字符的字符串。 可以在项目中考虑使用intval ( )
你可能认为这个函数不是security function。 有时候你可以保护你的代码。 处理从用户收集到的诸如ID、密码、用户名之类的数据可能能解决一些安全问题。 毕竟这里是灾区。