Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于将数据上传到服务器上的PHP脚本的私人内部公司应用程序,我应该考虑哪些潜在的安全问题?_Php_Android_Security_Retrofit2 - Fatal编程技术网

对于将数据上传到服务器上的PHP脚本的私人内部公司应用程序,我应该考虑哪些潜在的安全问题?

对于将数据上传到服务器上的PHP脚本的私人内部公司应用程序,我应该考虑哪些潜在的安全问题?,php,android,security,retrofit2,Php,Android,Security,Retrofit2,一点背景知识。我工作的公司需要一个解决方案,以便在交付时比等待文件返回办公室(有时长达一周)更快地获得问题报告。最便宜、最快捷的解决方案是一款应用程序,首先在Android上开发,然后转移到iOS上 该应用程序要求司机存储他们的姓名和电话号码,这些信息将随每份报告一起发送,以便我们在需要更多信息时知道联系谁。除此之外,如果需要,它们还将包括至少1个图像和附加信息。它使用Reformation2将所有这些数据发送到一个PHP脚本,该脚本将数据转发到一个电子邮件地址,并存储上传的图像 我们自己的驱动

一点背景知识。我工作的公司需要一个解决方案,以便在交付时比等待文件返回办公室(有时长达一周)更快地获得问题报告。最便宜、最快捷的解决方案是一款应用程序,首先在Android上开发,然后转移到iOS上

该应用程序要求司机存储他们的姓名和电话号码,这些信息将随每份报告一起发送,以便我们在需要更多信息时知道联系谁。除此之外,如果需要,它们还将包括至少1个图像和附加信息。它使用Reformation2将所有这些数据发送到一个PHP脚本,该脚本将数据转发到一个电子邮件地址,并存储上传的图像

我们自己的驱动程序和第三方驱动程序将在必要时使用该应用程序

该应用程序功能良好,运行良好,但我想知道我们应该考虑哪些安全问题?我当然不是安全方面的专家

如果PHP脚本有用,请注意,我不擅长PHP,但它对我来说非常有用:)


一个明显的缺陷是,如果有人知道你脚本的地址,他们可能会用它发送垃圾邮件

Sendmail有漏洞历史记录,这取决于版本和配置

数据是通过HTTPS而不是HTTP中的纯文本发送到脚本的吗

查看OWASP网站以获取一般安全建议

从您关于添加额外字符的评论中

在你的应用程序中,对driver_手机进行简单的加密,然后在PHP脚本中解密。然后,您可以检查解密后的driver_电话的起始数字是否正确,以获得有效号码。 e、 g在英国,手机号码以07或+447开头


如果您使用的是Apache,您可以对国家/地区、ip范围、允许的时间范围、仅限于某些用户代理字符串等进行限制。

这是一个非常开放的问题,安全性不仅存在于您发布的代码示例中,还包括保护实际服务器的安全。他是你的朋友。查看他们的安全框架、十大问题和代码片段。我很感激这是一个开放性问题,有点难以回答,但提供的链接确实有帮助,谢谢。谢谢你的回复,我将研究OWASP。如果脚本是通过检查应用程序也将发送的预期字符串或代码启动的,那么可以降低垃圾邮件风险吗?
<?php

    use PHPMailer\PHPMailer\PHPMailer;
    use PHPMailer\PHPMailer\Exception;

    $file_path = "uploads/";
    $date = date('Y-m-d H:i:s',time());


    if (isset($_FILES['uploaded_file']['name'])) {

        $new_images = reArrayFiles($_FILES['uploaded_file']);

        $deliveryNumber = $_POST['delivery_number'];
        $driverName = $_POST['driver_name'];
        $driverPhone = $_POST['driver_phone'];
        $additionalDetail = $_POST['additional_detail'];

        $i = 0;
        $new_files = array();

        foreach($new_images as $val) {

            $newname = $file_path.$deliveryNumber.'--'.$date.'--'.($i + 1).'.jpg';

            array_push($new_files, $newname);

            $i++;

            if(move_uploaded_file($val['tmp_name'], $newname)) {
                $response['message'] = '100';
                $response['error'] = false;
            } else {
                $response['error'] = true;
                $response['message'] = '200';
            }

        }

        email_information($new_files, $deliveryNumber, $driverName, $driverPhone, $additionalDetail);

    } else {

        $response['error'] = true;
        $response['message'] = '300';

    }
    echo json_encode($response);


    function reArrayFiles($file) {

        $file_ary = array();
        $file_count = count($file['name']);
        $file_key = array_keys($file);

        for($i=0;$i<$file_count;$i++)
        {
            foreach($file_key as $val)
            {
                $file_ary[$i][$val] = $file[$val][$i];
            }
        }
        return $file_ary;
    }

    function email_information($files, $number, $name, $phone, $detail){

        $mail_body = "Driver Report --- "."\n";
        $mail_body = $mail_body."Delivery Number : ".$number."\n";
        $mail_body = $mail_body."Driver Name : ".$name."\n";
        $mail_body = $mail_body."Driver Phone : ".$phone."\n";
        $mail_body = $mail_body."Additional Detail : ".$detail."\n";
        $mail_body = $mail_body."Files Attached : ".count($files)."\n";

        require_once('scripts/src/PHPMailer.php');

        $email = new PHPMailer();
        $email->SetFrom('email@domain.com', 'Auto Reporter');
        $email->Subject   = 'Delivery report for '.$number;
        $email->Body      = $mail_body;
        $email->AddAddress( 'email@domain.com' );

        foreach ($files as $file){

            $file_to_attach = $file;
            $email->AddAttachment( $file_to_attach , basename($file_to_attach));

        }

        return $email->Send();

    }

?>