javascript图像上传和查看的安全性
作为JSFirstTimer,考虑到文件类型是通过php检测和处理的,想问问下面的脚本是否正确(安全性)javascript图像上传和查看的安全性,javascript,php,file-upload,Javascript,Php,File Upload,作为JSFirstTimer,考虑到文件类型是通过php检测和处理的,想问问下面的脚本是否正确(安全性) var URL=window.URL | | window.webkitURL; $(“#文件”).change(函数(e){ var文件,img,大小; 如果((file=this.files[0])){ 如果(文件大小
var URL=window.URL | | window.webkitURL;
$(“#文件”).change(函数(e){
var文件,img,大小;
如果((file=this.files[0])){
如果(文件大小<“5100000”){
size=“good”;
img=新图像();
img.onload=函数(){
如果((此高度/(此宽度/64))<“200”){
如果(尺寸=“良好”){
//警报(“确定上载”);
$(“blah”).attr(“src”,img.src);
}
}else{alert(“文件太大(维度)”);}
};
img.src=\u URL.createObjectURL(文件);
}否则{
size=“大”;
警报(“文件太大,使用5MB或更小”);
}
}
});
编辑PHP部件
if(isset($_POST["titletext"])){
echo $_POST["titletext"];
if (!$_FILES["avafile"]["error"] > 0) {
echo "Upload: " . $_FILES["avafile"]["name"] . "<br>";
echo "Type: " . $_FILES["avafile"]["type"] . "<br>";
echo "Size: " . ($_FILES["avafile"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["avafile"]["tmp_name"] . "<br>";
move_uploaded_file($_FILES["avafile"]["tmp_name"], "upload/" . md5($_FILES["avafile"]["name"]));
echo '<img class="img-rounded" style="width: 64px;" src="./upload/'.$_FILES["avafile"]["name"].'">';
}
if(isset($\u POST[“titletext”])){
echo$_POST[“titletext”];
如果(!$\u文件[“avafile”][“error”]>0){
echo“上传:.”文件[“avafile”][“name”]。“
”;
echo“Type:”.$\u文件[“avafile”][“Type”]。“
”;
echo“Size:”($_文件[“avafile”][“Size”]/1024)。“kB
”;
回显“临时文件:.”文件[“avafile”][“tmp_名称”]。“
”;
移动上传的文件($上传文件[“avafile”][“tmp\U名称”],“上传/”.md5($上传文件[“avafile”][“名称”]));
回声';
}
}
现在还想知道是否有一种方法可以检测作为图像上传的脚本/文本,并使用一些“striptags”
正在使用md5(某物)名称上载图像。上载的大多数安全注意事项都在服务器端—例如,在PHP代码中。(一个例子可能是意外地允许上传“serverinfect.php”,并意外地将其放在可运行的wwwroot位置)您有任何php代码要发布吗?我很确定如果((file=this.files[0])始终为真,因为x=true为真,x=false为真。如果我在这方面错了,请纠正我。也就是说,给变量赋值总是正确的。@Katana314验证应该在客户端和服务器端都进行。我想说的是,文件扩展名包括在其中,我不希望.exe或.bat运行,即使它在服务器上得到验证。安全总比抱歉好。@Jonast92这是真的,尽管我认为这样的代码是“验证”,而不是“安全性”,以帮助防止用户做愚蠢的事情,而不会给他们一个直接的PHP错误。如果你试图阻止黑客破坏你的服务器或愚弄你的其他用户,他永远不会运行你的JavaScript——他会运行自己定制的HTTP请求来试图找到漏洞。他不必遵守JS脚本的任何规则。@Jonast92是的!这些都是我同意的。我想唯一的分歧是“安全性”和“验证性”,但我想这并不重要。
if(isset($_POST["titletext"])){
echo $_POST["titletext"];
if (!$_FILES["avafile"]["error"] > 0) {
echo "Upload: " . $_FILES["avafile"]["name"] . "<br>";
echo "Type: " . $_FILES["avafile"]["type"] . "<br>";
echo "Size: " . ($_FILES["avafile"]["size"] / 1024) . " kB<br>";
echo "Temp file: " . $_FILES["avafile"]["tmp_name"] . "<br>";
move_uploaded_file($_FILES["avafile"]["tmp_name"], "upload/" . md5($_FILES["avafile"]["name"]));
echo '<img class="img-rounded" style="width: 64px;" src="./upload/'.$_FILES["avafile"]["name"].'">';
}