小编ssh*_*ksh的帖子

验证base64编码的图像

我正在构建一个应用程序,允许用户使用POSTHTML5画布数据,然后在base64中编码并显示给所有用户.我正在考虑将数据解析为实际的.png文件并存储在服务器上,但base64路由允许我将图像存储在数据库中并最小化请求.图像是唯一的,很少,并且页面不会经常刷新.

一些jQuery将获取画布数据,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 …
Run Code Online (Sandbox Code Playgroud)

php security validation base64

23
推荐指数
2
解决办法
2万
查看次数

jQuery/AJAX:如何确定主机何时脱机

我有一个jQuery脚本,用于轮询我的服务器以获取新数据,但如果因任何原因失败,则需要显示错误消息.

这是我的AJAX请求:

$.ajax({
    url: "query.php", // This just runs some MySQL queries and echos the results
    cache: false,
    error: function() {
       $(".status").text("Server is offline.");
       },
    success: function(html) {
       // Everything went fine, append query results to div
       }
});
Run Code Online (Sandbox Code Playgroud)

我发现如果重命名query.php使其无法访问,则会触发错误功能并显示消息.但是,如果我使Web服务器脱机,则不会触发错误功能.

如何调整代码以检测主机何时无法访问?

php ajax jquery

5
推荐指数
1
解决办法
3296
查看次数

标签 统计

php ×2

ajax ×1

base64 ×1

jquery ×1

security ×1

validation ×1