繁体   English   中英

如何在 xamarin 中安全地使用外部存储读取/写入文件

[英]How to use securely External Storage for read/Write files in the xamarin

安全扫描报告显示消息为

*移动应用程序可以读取或写入模式访问外部存储(例如SD卡)。 应用程序存储在外部数据存储上的数据在某些情况下可能会被其他应用程序(包括恶意应用程序)访问,并带来数据损坏或篡改的风险。

风险等级:中

扫描报告中不安全的 Jave 代码示例:

    /* Checks if external storage is available for read and write */
    public boolean isExternalStorageWritable() {
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            return true;
        }
        return false;
    }
    
    
    /* Checks if external storage is available to at least read */
    public boolean isExternalStorageReadable() {
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state) ||
            Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            return true;
        }
        return false;
    }

扫描报告中的安全代码示例:

// If you use external storage you should perform input validation.
// In the case that you use external storage for executables files,
// these files should be signed and cryptographically verified.

在我们的应用程序中使用以下代码:

var directory = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
           directory = Path.Combine(directory, Android.OS.Environment.DirectoryDownloads);
           string file = Path.Combine(directory.ToString(), WebUtility.UrlEncode(customWebView.Uri));
var documentsPath =System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var filePath1 = Path.Combine(documentsPath, WebUtility.UrlEncode(customWebView.Uri)); 

Andriodmanifest.xml:

<application android:label="TL" android:allowBackup="false" android:icon="@drawable/app_icon" android:requestLegacyExternalStorage="true">
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyDVTkBTiMl0e2KhzJcuCibAoykSSGEEm6E" />
    <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
    <receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">

请任何人帮助我,如何在 xamarin 中编写安全使用外部存储的代码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM