�m���Ă���΋����Ȃ��AXMLHttpRequest�ɂ��XSS�ւ̑Ή����@�FHTML5����́u�V�����Z�L�����e�B�E�G�`�P�b�g�v�i3�j�i1/2 �y�[�W�j

�g�V����XSS�h�͒m���������΍�̑����B��{�̑΍���s�����Ƃ��d�v�ł��BXMLHttpRequest�ɂ��XSS����O�ł͂���܂���B

» 2014�N03��17�� 18��00�� ���J
uHTML5́wVZLeBEG`PbgxṽCfbNX

�A�ږڎ�

�@�F���񂱂�ɂ��́B�l�b�g�G�[�W�F���g�̂͂�����悤�����ł��B�O���́A����I���W���|���V�[��˔j����U���̑�\�I����ł���XSS�ɂ‚��āA����DOM based XSS�ƌĂ΂����̂ɂ‚��ĉ�����܂����B����͂��̑����Ƃ��āAXMLHttpRequest�ɂ��XSS��������܂��B

XHR Level 2�ɂ�郊���[�g����̃R�[�h�}���ɂ��XSS

�@�]���AXMLHttpRequest�i�ȉ��AXHR�j�́A�\�����Ă���h�L�������g�Ɠ����I���W���i�I���W���ɂ‚��Ă���1�����Q�Ɓj�Ƃ����ʐM�ł��܂���ł������A���݂̎�v�ȃu���E�U�[�ł�XHR Level 2�ƌĂ΂������ɂ��A�I���W���𒴂��ĒʐM���邱�Ƃ��”\�ɂȂ��Ă��܂��B

�@����́AJavaScript�ɂ�邢����Ajax�ȃA�v���P�[�V�����̉”\����傫���L����Ɠ����ɁA�U���҂ɂƂ��Ă��U���ΏۂƂȂ�T�C�g�ƍU���Ҏ��g�̗p�ӂ���㩃T�C�g�̊Ԃł̒ʐM���”\�ɂ��A�U���̕����L������̂ɂ��Ȃ��Ă��܂��B�܂��AXHR���I���W���𒴂��ĒʐM���Ȃ��Ƃ�������ɐ݌v���ꂽ���‚Ă�Web�A�v���P�[�V�����ɂ́A�N���X�I���W���ʐM���”\�ɂȂ���XHR Level 2�̏o���A���Ȃ킿�u���E�U�[�̃o�[�W�����A�b�v�ƂƂ��ɁA������ˑR�Ǝ�ɂȂ����悤�Ȃ��̂�����܂��B

�@�Ⴆ�΁A���T�C�g�Ƃ̒ʐM��O��Ƃ��ʐM���URL���́u#�v(�n�b�V��)�ȍ~�Ɏw�肵�A�uhttp://example.jp/#/news�v�̂悤�ɃA�N�Z�X���邱�ƂŁAXHR�ɂ�萏���y�[�W���̃R���e���c�̈ꕔ������������Ƃ����A�ȉ��̂悤��JavaScript�R�[�h���������Ƃ��܂��B

// ���T�C�g�Ƃ̒ʐM��O��Ƃ����R�[�h�i�Ǝ�ȗ�j
var url = location.hash.substring( 1 ) || "/news";
var xhr = new XMLHttpRequest();
xhr.open( "GET", url, true );
xhr.onreadystatechange = function(){
    if( xhr.readyState == 4 && xhr.status == 200 ){
        div.innerHTML = xhr.responseText; // �擾�����R���e���c��\��
    }
};
xhr.send( null );

�@���̂悤�ȃR�[�h�́AXHR���h�L�������g�Ɠ����I���W���Ƃ����ʐM�ł��Ȃ���������ɂ͑S����肪����܂���ł������AXHR���I���W���𒴂��ĒʐM�ł���悤�ɂȂ������݂̃u���E�U�[�ł�XSS�����݂��邱�ƂɂȂ�܂��B

�@�U���҂����[�U�[���uhttp://example.jp/#//evil.example.com/�v�Ȃǂ�URL�ɗU������ƁAXHR�̒ʐM��Ƃ��āu//evil.example.com/�v���g�p����܂��B�u//�v�Ŏn�܂�URL�́A���݂�URL�Ɠ����v���g�R���X�L�[�����g�����Ƃ��Ӗ�����̂ŁAXHR�́uhttp://evil.example.com/�v����R���e���c���擾���A���ꂪ�uhttp://example.jp/�v���HTML�Ƃ��đ}�������A�T�^�I��DOM based XSS���������܂��B

�@���̗�ł́A�udiv.innerHTML�v�֑�����Ă���̂ŁA�U���҂̗p�ӂ����X�N���v�g�����삷�邱�ƂɂȂ�܂����A�O���������DOM based XSS�ւ̑΍�Ƃ��āA������̃G�X�P�[�v��e�L�X�g�m�[�h��p���Ă�DOM������s���Ă����ꍇ�͂ǂ��Ȃ�ł��傤���B

�@���̏ꍇ�A�m���ɃX�N���v�g�͓��삵�܂��񂪁A����ł��U���҂̗p�ӂ����U�̃R���e���c��Web�T�C�g��ɕ\������邱�Ƃɕς�肠��܂���B�Ⴆ�΃j���[�X�����[�X�����J����y�[�W�̂悤�ɁAWeb�T�C�g�K��҂ɐM���ł������^���邱�Ƃ��ړI�̏ꍇ�ɂ͑傫�Ȗ��ƂȂ�܂��B

�{���I�ȑ΍�́u���N�G�X�g����Œ�v���邱��

�@�{���I�ȑ΍�Ƃ��ẮA�Ӑ}���Ȃ��T�C�g�ɑ΂��ĒʐM���Ȃ��悤�AXHR�̃��N�G�X�g����Œ肷����@������܂��B

// ���S�ȗ�B�ʐM������O�ɌŒ�̃��X�g�Ƃ��ĕێ�
var page = decodeURIComponent( location.hash.substring(1) );
var pages = { "/news":"/news", "/comment":"/comment"}; // �ʐM��̈ꗗ
var url = pages[ page ] || "/news"; //undefined�̂Ƃ���/news���擾
var xhr = new XMLHttpRequest();
xhr.open( "GET", url, true );
xhr.onreadystatechange = function(){
    if( xhr.readyState == 4 && xhr.status == 200 ){
        div.innerHTML = xhr.responseText;
    }
}

�@���̂悤�ɁAXHR�̒ʐM����Œ�̃��X�g�����炩���߃R�[�h���ŕێ����Ă������ƂŁA���̃T�C�g�ƒʐM���Ă��܂��]�n�����S�ɔr�����邱�Ƃ��ł��܂��B

�ʐM���URL���`�F�b�N������@�̓A���H �i�V�H

�@����AXHR�̒ʐM�O��URL�����T�C�g�̂��̂��ǂ�������������Ƃ������@�ł́A�ǂ����Ă������̘R�ꂪ��������”\�������邽�߁A���܂�悢���@�Ƃ͂����܂���B

�@�Ⴆ�΁A�ʐM��URL�����T�C�g�����ǂ��������O�Ɋm�F����ȉ��̂悤�ȃR�[�h���������Ƃ��܂��B

// �Ǝ�ȗ�B���O��URL�����T�C�g�����ǂ������m�F���Ă���‚���
var url = location.hash.substring( 1 ) || "/news";
if( url.match( /^\/[^\/]/ ) ){  // �擪���u/�v�A�Q�����ڂ��u/�ȊO�v�̂Ƃ��̂ݒʐM
    var xhr = new XMLHttpRequest();
    xhr.open( "GET", url, true );
    xhr.onreadystatechange = function(){
        if( xhr.readyState == 4 && xhr.status == 200 ){
            div.innerHTML = xhr.responseText; // �擾�����R���e���c��\��
        }
    };
    xhr.send( null );
}

�@���̗�ł́A�ʐM���URL���Ⴆ�΁u/news�v�̂悤�ɁA���K�\���ɂ��`�F�b�N���s���A�擪���u/�v�łQ�����ڂ��u/�ȊO�v�Ƃ����ꍇ�ɂ̂�XHR�ɂ���ăR���e���c���擾�A�\�����邱�Ƃ��Ӑ}���Ă��܂��B�Ƃ��낪���ۂɂ̓u���E�U�[�ɂ���Ắu/\evil.example.com/�v�̂悤�ȕ\�L�ɂ���Ă��u//evil.example.com/�v�Ɠ��`�Ɏ�舵�����̂�����A�U���҂�URL�̌����ӏ������܂��������XSS�U���ɐ������܂��B

�@���̂悤�ɁAURL���z�肵���T�C�g���ł��邩�ۂ��𒲂ׂ�͎̂��͈ӊO�ƍ���ł��B�����ăT�C�g���Ɉ�‚ł��I�[�v�����_�C���N�^�[�����݂���ꍇ�́A���̃I�[�v�����_�C���N�^�[���o�R���čU���҃T�C�g�̃R���e���c���w���������Ƃɂ��AURL�̌�����������邱�Ƃ��”\�ɂȂ��Ă��܂��܂��B

�@�J��Ԃ��ɂȂ�܂����A�����������Ǝ㐫��h�����߂ɁAXHR�̒ʐM��͂��炩���߃R�[�h���ŌŒ�̃��X�g�Ƃ��ĕێ����Ă������Ƃ��]�܂����Ƃ�����ł��傤�B

�@�@�@�@�@�@ 1|2 ���̃y�[�W��

Copyright © ITmedia, Inc. All Rights Reserved.

'; this.insertTarget = document.querySelector('#cmsBody .subscription') || document.querySelector('#cmsBody .inner'); }; BodyAdIMSWithCCE.prototype = Object.create(BodyAdContent.prototype); BodyAdIMSWithCCE.prototype.activate = function () { refreshGam('InArtSpecialLink'); } // global reference window.itm = itm; //entry point BodyAdEventBase.polyfill(); const bodyAdManager = BodyAdManager.getInstance(); bodyAdManager.addEventListener(BodyAdManager.EVENTS.READY, function (ev) { bodyAdManager.loadAdvertise(); }); bodyAdManager.init(); })();
�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

Microsoft  WindowsőO2025
AI for GWjAO
[R[h^m[R[h Zg by IT - ITGWjArWlX̒SŊ􂷂gD
Cloud Native Central by IT - XP[uȔ\͂gD
�V�X�e���J���m�E�n�E �y�����i�r�zPR
���Ȃ��ɂ������߂̋L��PR

RSS�ɂ‚���

�A�C�e�B���f�B�AID�ɂ‚���

���[���}�K�W���o�^

��IT�̃��[���}�K�W���́A �������A���ׂĖ����ł��B���Ѓ��[���}�K�W�������w�ǂ��������B