在php中上传文本文件,如何做及安全措施


Text file upload in php, how to do and safety measures

我需要允许用户上传文本文件的HTML和PHP。

我听说应该小心那些允许用户上传自己文件的功能,因为人们可能会注入恶意软件和代码。假设我的网站只允许Mac和Windows上的MS Word,代码是什么样子的,我应该使用什么代码来防止恶意软件注入?

文件不超过1MB。

这是我目前拥有的:

<html>
<body>
    <form action="uploadtextfile.php" enctype="multipart/form-data" method=
    "post">
        <label for="file">Filename:</label> <input id="uploadedtextfile" name=
        "textfile" type="file"><br>
        <input name="submit" type="submit" value="Send!">
    </form>
</body>
</html>

我不知道使用什么PHP代码,但根据W3Cschools.com,它应该看起来像这样:

<?php
    if ($_FILES["file"]["error"] > 0) {
        echo "Error: ".$_FILES["file"]["error"]."<br>";
    } else {
        echo "Upload: ".$_FILES["file"]["name"]."<br>";
        echo "Type: ".$_FILES["file"]["type"]."<br>";
        echo "Size: ".($_FILES["file"]["size"] / 1024)." kB<br>";
        echo "Stored in: ".$_FILES["file"]["tmp_name"];
    } 
?>

我应该如何形成代码,使其安全使用,只接受最大1MB的MS Word文件?

首先列出数组中所有允许的MS Word扩展名。

$allowedExts = array('doc', 'docx');

使用pathinfo获取文件的扩展名

$extension = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);

检查该扩展名是否存在于您创建的数组中如果是,则根据条件检查该文件的大小。

if (in_array($extension, $allowedExts))
{
  if (($_FILES["file"]["size"] / 1024) <= 1024)
  {
     // File upload code goes here
  }
}

你应该工作,我自己还没有试过。