【发布时间】:2016-02-06 08:50:56
【问题描述】:
我将它与html2canvas.js 一起使用以从 HTML 生成和保存图像。
我使用 url 参数来完成这项工作 - 例如:website.com/?price=10&name=xxx
到这里为止一切正常 - 脚本运行良好 - 图像保存在 /cart/ dir
<?php
$image = $_POST['image'];
$username = $_POST['username'];
$front_class = $_POST['front_plass'];
$decoded = base64_decode(str_replace('data:image/png;base64,', '', $image));
$date = date('d-M-Y-h-i-a', time());
$curdir = getcwd();
$cartDir = $curdir ."/cart";
$userDir = $cartDir.'/'.$username;
if (!file_exists($userDir)) {
mkdir($cartDir.'/'.$username, 0777);
}
$name = $front_class."-front-".$date.".png";
$full_path = $userDir.'/'.$name;
$name1 = 'cart/'.$username.'/'.$name;
function ImageFillAlpha($image, $color) {
imagefilledrectangle($image, 0, 0, imagesx($image), imagesy($image), $color);
}
function imageCreateCorners($sourceImageFile, $name, $radius) {
...
}
file_put_contents($full_path, $decoded);
imageCreateCorners($full_path, $name, 25);
echo '<img src="'.$name1.'" alt="front" id="front_img" />';
?>
还有js
html2canvas($('#front'), {
"logging": true,
//"proxy":"html2canvasproxy.php",
"onrendered": function(canvas){
var dataURL = canvas.toDataURL("image/png");
$.post('image_front.php',{
image: dataURL,
username: username,
front_class: frontClass
},function(data){
$('.imageHolder_front').html(data);
});
}
});
问题是昨天有人黑了我两次,我认为这是我需要保护$_POST 或者参数可能是问题?
这里有什么帮助吗?我不太擅长后端开发——更擅长前端。
谢谢。
【问题讨论】:
-
您没有验证您的数据。编程的第一条规则是假设您的用户是恶意的。 (第二个是假设他们很愚蠢)。
-
@JohnConde 我无法验证 用户名,因为它可以使用任何类型的字符。
-
您还应该有一些 CSRF(跨站点请求伪造)保护,因为我猜您是在使用表单中的参数构建 URL?
-
@Adrian 你可以验证用户名是真实的。
-
为什么有些固定在数据库的使用上?这个问题没有代码支持它,也没有提到它。