php检验base64编码,php – 验证base64编码的图像

我正在构建一个应用程序,允许用户POST

HTML5 canvas数据,然后在base64中编码并显示给所有用户.我正在考虑将数据解析为实际的.png文件并存储在服务器上,但base64路由允许我将图像存储在数据库中并最小化请求.图像是唯一的,很少,页面不会被刷新.

一些jQuery将获取canvas数据,data:image / png; base64,iVBORw …并将其传递给包含它的PHP脚本,如下所示:< img src =“$data”>< / IMG> 但是,安全性是基石,需要验证base64画布数据,以防止POST请求中传递恶意数据.我的主要关注点是防止将外部URL注入< img>标签并在页面加载时被请求.

我目前有一个这样的设置:

$data = (isset($_POST['canvas']) && is_string($_POST['canvas'])) ? $_POST['canvas'] : null;

$base = str_replace('data:image/png;base64,', '', $data);

$regx = '~^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$~'

if ((substr($data, 0, 22)) !== 'data:image/png;base64,')

{

// Obviously fake, doesn't contain the expected first 22 characters.

return false;

}

if ((base64_encode(base64_decode($base64, true))) !== $base64)

{

// Decoding and re-encoding the data fails, something is wrong

return false;

}

if ((preg_match($regx, $base64)) !== 1)

{

// The data doesn't match the regular expression, discard

return false;

}

return true;

我想确保我当前的设置足够安全,以防止将外部URL插入到< img>标签,如果没有,可以做些什么来进一步验证图像数据?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值