php安全知识点

本文介绍PHP的基础语法,包括变量声明规则、常见函数如echo、print、isset等的使用方法,以及数组操作和数据库交互等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<?php

//php代码

?>

php输出

echo:可以输出一个或多个字符串

print:只允许输出一个字符串,返回值总为1.

变量

PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的

弱类型安全

php中有一些相等的值

''==0==false==NULL
'123'==123
'abc'==0
'123a'==123
'0x01'==1
'0e123456789'=='0e987654321'
[false] ==[0]==[NULL]==['']
true == 1

  • $GLOBALS全局变量

函数
常用
 array()    
创建数组

bool is_numeric ( mixed $var )
检测变量是否为数字或数字字符串,注意,可以是16进制,字符串转16进制可以绕过。is_numeric函数对于空字符%00,无论是%00放在前后都可以判断为非数值。

由于php是弱类型语言,会使用这个函数来判断一下。

rand(min,max)
生成随机整数

sleep(seconds)
延迟执行当前脚本若干秒

bool isset ( mixed $var [, mixed $... ] )
检测变量是否已设置并且非 NULL

die(message)
输出一条消息,并退出当前脚本。

md5()
以下值在md5加密后以0E开头:

QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
可以用于md5相等,但两值不相等的情况

base64_encode()、base64_decode()、sha1() 和 strcmp()

传入数组,返回NULL

数据库相关
mysqli
mysqli_connect(host,username,password,dbname,port,socket)
打开一个到 MySQL 服务器的新的连接。

mysqli_error(connection)
返回最近调用函数的最后一个错误描述。

mysqli_close(connection)
关闭先前打开的数据库连接。

mysqli_query(connection,query,resultmode)
执行某个针对数据库的查询

mysqli_fetch_assoc(result)
从结果集中取得一行作为关联数组

mysqli_fetch_row(result)
从结果集中取得一行,并作为枚举数组返回

mysqli_num_rows(result)
返回结果集中行的数量

mysqli_real_escape_string(connection,escapestring)
转义在 SQL 语句中使用的字符串中的特殊字符,难道转义后我们就没有办法注入了?NO!!!

php官方函数参考手册中写到,会被进行转义的字符包括: NUL (ASCII 0),\n,\r,\,'," 和 Control-Z.

也就是或如果是数字型注入,例如,payload是 1 and 1=1# ,那么这个函数没有用,因为payload中不包含以上字符。

另外,在调用 mysqli_real_escape_string() 函数之前, 必须先通过调用mysqli_set_charset()函数或者在 MySQL 服务器端设置字符集。如果字符集设置不当,可以通过宽字节注入来进行绕过。

pdo
PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。

PDO 提供了一个数据访问抽象层,这意味着,不管使用哪种数据库,都可以用相同的函数(方法)来查询和获取数据。

public PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] )
为 PDOStatement::execute() 方法准备要执行的SQL语句,SQL语句可以包含零个或多个命名(:name)或问号(?)参数标记,参数在SQL执行时会被替换。这样就没法破坏sql语句的结构,不是拼接,也就是网络安全-SQL注入原理及防御SQL注入中提到的sql注入防御的第一种。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值