根据PHP.net手册unserialize
(http://php.net/manual/en/function.unserialize.php)和几个谷歌搜索找到 - unserialize
代码可以被利用.
我没有太多关于黑客如何利用unserialize
代码的信息.我只是害怕,因为我正在使用来自外部用户输入的反序列化代码.
下面是我的代码,我想知道这段代码是否可以被利用:
<?php
if(filter_var($_GET['url'], FILTER_VALIDATE_URL)) {
// $_GET['url'] = 'http://example.com/page/1.html'
$html = file_get_contents($_GET['url']);
$doc = new DOMDocument();
$encode = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8");
libxml_use_internal_errors(true);
$doc->loadHTML($encode);
libxml_clear_errors();
$nodes = $doc->getElementsByTagName('title');
$title = strtolower($nodes->item(0)->nodeValue);
// storing in mysqli database
// hiding mysql code..
$serialize = serialize(['icon' => 'check', 'data' => $title]);
// fetching from mysqli database.
// hiding other mysql code..
$row = $fetch->fetch_assoc();
$unserialize = unserialize($row['title']);
}
Run Code Online (Sandbox Code Playgroud)
黑客可以制作"恶意标题"标签并提供他的URL来利用我的反序列化代码吗?
更新:我用的PDO
是mysql,这不是问题.我担心的是来自外部网站 …
我有以下 2 条路线:-
Route::get('resize/avatar', function() {
$image = 'avatar.jpg';
$target_filename_here = 'thumbnail_'.$image;
$ffs = imagecreatefromjpeg($image);
$size = getimagesize($image);
$dst = imagecreatetruecolor(100,100);
$dds = imagecopyresampled($dst,$ffs,0,0,0,0,100,100,$size[0],$size[1]);
$dn = imagepng($dst,$target_filename_here); // adjust format as needed
imagedestroy($ffs);
imagedestroy($dst);
if($dds) {
return Redirect::to('color/');
} else {
return 'Failed to load the Profile Picture';
}
});
Route::get('color/', function() {
if(file_exists('thumbnail_avatar.jpg')) {
$dest = imagecreatefrompng('transcript.png');
$fn = imagecreatefromjpeg('thumbnail_avatar.jpg');
imagecopy($dest, $fn, 550, 830, 0, 0, imagesx($fn), imagesy($fn));
imagejpeg($dest,"test4.jpg",90);
imagedestroy($dest);
imagedestroy($fn);
return HTML::image('test4.jpg');
} else {
return Redirect::to('resize/avatar');
} …
Run Code Online (Sandbox Code Playgroud) 虽然我不得不将一些数据指向一个结构体,但我对Golang 结构体[]*Users
和*[]Users
Golang 结构体之间的区别感到困惑
我有以下结构
type Users struct {
ID int
Name string
}
Run Code Online (Sandbox Code Playgroud) Laravel基本上具有以下input
类型的功能file
.
// Determine if a file was uploaded
Input::hasFile('filename');
// Access file properties
Input::file('name')->getRealPath();
Input::file('name')->getClientOriginalName();
Input::file('name')->getClientOriginalExtension();
Input::file('name')->getSize();
Input::file('name')->getMimeType();
Run Code Online (Sandbox Code Playgroud)
如果我getClientOriginalExtension
用来找到正确的图像扩展名,getSize
限制文件上传大小和getMimeType
检查图像的mimetype.
我安全吗?并且可以对功能有信心,它不会被黑客以任何方式利用.
考虑到一个事实,我将只上传图像.
http://php.w3clan.com/tutorial/47/form-handling-secure-uploading
$rule = [ 'name' => 'image' ];