�u���Z�q�̃C���W�F�N�V�����v�ƁuSSJI�v�FNoSQL���g���Ȃ�m���Ă��������Z�L�����e�B�̘b�i1�j�i1/2 �y�[�W�j

�������N�A��ʃf�[�^�������̍�������f�[�^�\���̏_��Ȃǂ���A�uNoSQL�v�����ڂ��W�߂Ă��܂��B����Ɠ����ɁANoSQL���g���A�v���P�[�V�����ɑ΂���U����@�����������悤�ɂȂ�܂����B���̋L���ł́ANoSQL���g�����A�v���P�[�V�����̐Ǝ㐫�Ƒ΍�ɂ‚��ĉ�����܂��B

» 2013�N05��22�� 18��00�� ���J

���ڏW�߂�uNoSQL�v

�@�������N�ANoSQL�ƌĂ΂���ނ̃f�[�^�x�[�X�����ڂ��W�߂Ă��܂��BNoSQL��SQL������g�p���Ȃ��f�[�^�x�[�X�̑��̂ŁA��ʃf�[�^�������̍�������f�[�^�\���̏_��Ȃǂ̃����b�g�����邽�߁A�]���̃����[�V���i���f�[�^�x�[�X�iRDB�j��⊮�E��ւ�����̂Ƃ��āA��K�͂�Web�A�v���P�[�V�����Ȃǂɂ�����NoSQL���̗p���鎖�Ⴊ�����Ă��܂��B

�@���̂悤�ȐV�����Z�p�����y���n�߂�ƁA���O�����̂��Z�L�����e�B�ł��B�U���҂͓��Ƀf�[�^�x�[�X�̃f�[�^�̐ގ�������ɑ傫�Ȋ֐S�������Ă��邽�߁A�f�[�^�x�[�X�Ƃ��̈��ł���NoSQL�̃Z�L�����e�B�͏d�v�ƌ����܂��B

�@�f�[�^�x�[�X�ɑ΂���Z�L�����e�B��̋��Ђɂ‚��ĐU��Ԃ��Ă݂�ƁAWeb�A�v���P�[�V�����ɑ΂���SQL�C���W�F�N�V�����U�����҈Ђ�U����Ă������Ƃ����M����܂��B����10�N�قǁASQL�C���W�F�N�V�����ɂ���Q�������؂�Ȃ��قǑ����������Ă��܂����BRDB���̌l����ގ悳�ꂽ��ARDB����Web�R���e���c�������񂳂�E�C���X�𖄂ߍ��܂ꂽ�肷��Ƃ������̂ł��B�����Ă��̔�Q�͍��Ȃ������Ă��܂��B

�@����ł�NoSQL�͂ǂ��Ȃ̂ł��傤���B

�@���ۂ̂Ƃ���A���M���_�ɂ����Ă�NoSQL�ɑ΂���U���E��Q�̎���Ƃ��Ēm���Ă�����̂͋ɂ߂ď����ɂƂǂ܂��Ă��܂��B���̎�ȗv���́ANoSQL���܂��V�����ARDB�قǍL���g���Ă��Ȃ����Ƃɂ���Ǝv���܂��B���̑��̗v���Ƃ��ẮA���݂͏d�v�ȃf�[�^��NoSQL�ɕۑ�����P�[�X�����Ȃ����ƁANoSQL����SQL�C���W�F�N�V�����̋��P�𓥂܂������̃Z�L�����e�B�΍􂪂���Ă��邱�ƁA�f�[�^�ɃA�N�Z�X���邽�߂̃C���^�[�t�F�C�X�����i���ƂɃo���o���ł���U�������Â炢���ƁA�Ȃǂ��������܂��B

�@�������A�����NoSQL���g���A�v���P�[�V�������������ň��S�ł��邱�Ƃ��Ӗ����܂����B�������N��NoSQL�̕��y�ɔ����ANoSQL�̓Z�L�����e�B�ƊE�ł����ڂ𗁂тĂ���ANoSQL���g���A�v���P�[�V�����ɑ΂���U����@����������Ă��Ă��܂��B���̒��ŁA�]����RDB�Ƃ͈قȂ�V�����^�C�v�̍U�����@���҂ݏo����Ă��܂����B

�y�֘A�����N�z

NoSQL, no security? - Will Urbanski (DELL)

http://www.slideshare.net/wurbanski/nosql-no-security


�@���̂悤�Ȕw�i����A�{�L���ł�NoSQL�ɓ��������U�����@��΍��������܂��B���グ��̂�NoSQL���i���̂̃Z�L�����e�B�ł͂Ȃ��ANoSQL���g���A�v���P�[�V�����̕s���ɂ���Đ�������C���W�F�N�V�����n�̐Ǝ㐫�ł��B

�@�܂�NoSQL�ɂ����܂��܂Ȑ��i������܂����A�{�L���Ŏ�Ɏ��グ��̂�MongoDB�ł��B���ɂ��ACassandra�ARedis�Amemcached�ɂ‚��ĊȒP�ɐG�ꂽ���Ǝv���܂��B��������I�[�v���\�[�X��NoSQL���i�ł��B

�@�����̒��ł́ANoSQL�ɃA�N�Z�X����v���O�����̗�������‚������܂��BPHP�܂���Java�ŏ����ꂽ���̂ł����A�ȒP�Ȃ��̂Ȃ̂ŁA�����̌���ɏڂ����Ȃ����ł������I�ɗ����ł���Ǝv���܂��B

�@����ł͂܂��́AMongoDB���g���A�v���P�[�V�����ɂ‚��āA�Z�L�����e�B��̒��ӓ_�Ȃǂ�������܂��B

MongoDB���g���A�v���P�[�V�����̃Z�L�����e�B

�@MongoDB�́A�h�L�������g�w���^�ɕ��ނ����I�[�v���\�[�X��NoSQL�f�[�^�x�[�X�ł��B�_��ȃf�[�^�\���i�X�L�[�}���X�j�ƁA�A�z�z���JavaScript���g�������x�ȃN�G���̏����������ł��B���M���_�ł̍ŐV�o�[�W������2.2.3�ŁA�{�L���̓��e�͂��̋����Ɋ�Â��܂��B

�@�܂��́AMongoDB�ɃA�N�Z�X����PHP�v���O�����̃C���[�W���‚���ł����������߂ɁA�T���v���v���O�����i�Ǝ㐫���Ȃ��v���O�����j�������܂��B

// �o�^����f�[�^�i�A�z�z��j���쐬
$member = array('name' => 'MBSD',
                'birthyear' => '1980',
                'interests' => array('music', 'travel'));
// �f�[�^��o�^
$db->members->insert($member);
// �f�[�^���������J�[�\�����擾
$cursor = $db->members->find(array('birthyear' => '1980'));

�@�f�[�^�x�[�X�ւ̐ڑ������Ȃǂ͏ȗ����Ă��܂��B�v���O�������́umembers�v�i$db->members�j�́AMongoDB�ɂ����Ắu�R���N�V�����v�ƌĂ΂����̂ŁARDB�̃e�[�u���ɑ������܂��B

�@�v���O�����ł͍ŏ���name�Abirthyear�Ainterests�Ƃ���3�‚̃L�[�����˜A�z�z��ł��郆�[�U�[�����`���A�����MongoDB�̃R���N�V�����ɓo�^���Ă��܂��B���ɂ��̃R���N�V��������birthyear��'1980'�̃��[�U�[���������Ă��܂��B�o�^�E�����̂�����ɂ����Ă��A�����Ƃ���PHP�̘A�z�z���^���Ă��܂��B

�@MongoDB���X�L�[�}���X�ƌ�����̂́A���O�ɃR���N�V�����̃X�L�[�}���`����K�v���Ȃ��A�܂������R���N�V�����ɈقȂ�\�������ƒf�[�^���ۑ��ł��邽�߂ł��B���̂��߁A�T�[�r�X�̉^�p���n�܂�����ł����Ă��uname�Abirthyear�Ainterests�ɉ����āA�����email���ۑ�����悤�ɂ���v�Ƃ��������Ƃ��f�[�^�x�[�X���̕ύX�Ȃ��Ɏ����ł��܂��B

�@�N�G���̂����悻�̃C���[�W���‚��߂��Ƃ���ŁA�{���MongoDB�̃Z�L�����e�B�ɂ‚��Ă̘b�ɓ���܂��B�{�L���ł͈ȉ���4��ނ̐Ǝ㐫�����グ�܂��B

  1. ���Z�q�̃C���W�F�N�V����
  2. SSJI�iServer Side JavaScript Injection�j
  3. JSON������ւ̃C���W�F�N�V����
  4. �p�����[�^�̒lj�

�@�•ʂ̐Ǝ㐫�̓��e���ȉ��Ɍ��Ă����܂��B

1. ���Z�q�̃C���W�F�N�V����

�@MongoDB�ł́A�N�G���ɗ^����A�z�z��̃L�[�ɉ��Z�q���܂߂邱�Ƃ��ł��܂��B�s�K�؂ȃv���O���~���O�����Ă���ƁA�U���҂ɂ���ăN�G�����ɉ��Z�q�𖄂ߍ��܂�A�{���̈Ӑ}�Ƃ͈قȂ�N�G���ɕς����Ă��܂��댯��������܂��B

�Ǝ�ȃA�v���P�[�V�����̗�

�@���L��MongoDB���g���ăZ�b�V�����Ǘ����s��PHP�̃v���O�����̈ꕔ�ł��B

// Cookie����Z�b�V����ID���擾����
$sessionId = $_COOKIE['sessionId'];
// �Z�b�V����ID���L�[��MongoDB�̃Z�b�V�����R���N�V����������
// findOne()�͌������ʂ̂�����s��Ԃ����\�b�h
$member = $db->sessions->findOne(array('sessionId' => $sessionId));
if ($member) {
    // �A�N�Z�X���Ă��郆�[�U�[�̓��O�C���ς�
    $userId = $member['userId'];

�@���̃v���O�����́A�Z�b�V����ID��Cookie����󂯎��A������L�[�ɃZ�b�V�����R���N�V�����isessions�j���������܂��B�������ʂ����݂���ꍇ�ɂ́A���[�U�[�����O�C���ς݂ł���Ƃ݂Ȃ��܂��B���̂��Ƃ̏����͏ȗ����Ă��܂����A���̉���̏���\������Ȃǂ̏������������̂ƍl���Ă��������B

�@����ȃp�����[�^�iCookie�j�͉��L�̂悤�Ȓl�ł���Ƃ��܂��B

����p�����[�^��F�@sessionId=3353f8f87cd6449abfbe320bc7c88446


�@�{�P�[�X�ɂ�����U���҂̖ڕW�́A�������Z�b�V����ID�iCookie�j���T�[�o�ɑ��邱�ƂȂ��A�ʂ̉���ɂȂ肷�܂����Ƃł��B

�U����

�@����ɂȂ肷�܂����߂ɁA�U���҂͉��Z�q���܂ރp�����[�^�𑗐M���܂��B��̓I�ɂ͉��L�̂悤�ɑ��삵���p�����[�^�𑗐M���܂��B

����p�����[�^��F�@sessionId[$ne]=x


�@PHP�Ȃǂ̌���ɂ́A�z��^�A�z�z��Ɖ��߂ł���`���ŏ����ꂽ���N�G�X�g�p�����[�^���A�v���O�������Ŕz��^�A�z�z��ɓW�J����@�\������܂��B���̋@�\�ɂ��A�p�����[�^������s�����ۂ�findOne���\�b�h�ɗ^������A�z�z��́A���L�̂悤�Ƀl�X�g�������̂ɂȂ�܂��B

array('sessionId' => array('$ne' => 'x'))


�@������󂯎��MongoDB�́A�u$ne�v�iNot Equal�j�Ƃ����L�[��ے艉�Z�q�Ƃ��Ĉ������߁AMongoDB�͌����������usessionId != 'x'�v�ł���Ɖ��߂��܂��B�Z�b�V����ID���ux�v�̃��[�U�[�͑��݂��Ȃ����̂ƍl����ƁA���O�C�����̉���̑S���������Ƀ}�b�`���邱�ƂɂȂ�܂��B�]���āA�N���͕�����Ȃ����̂́A�U���҂̓��O�C���ς݂̉����1�l�Ƃ��ă��O�C��������ԂɂȂ��Ă��܂��ł��傤�B

�@���̍U����ł́u$ne�v���Z�q���g���܂������A���̑��ɂ�MongoDB�ɂ͂��܂��܂ȉ��Z�q������A�U���ɗ��p�ł�����̂͑��ɂ���������܂��B���L�́u$regex�v���Z�q���g���ĕʂ̉���ɂȂ肷�܂���ł��B

����p�����[�^��F�@sessionId[$regex]=^a


�@����ɂ��A�Z�b�V����ID�̐擪���ua�v�ł������̂����ꂩ�Ƃ��ă��O�C��������ԂɂȂ�܂��B

�΍�

�@��L�̖��̌����́A������^�̓��̓f�[�^�����҂��Ă���ɂ�������炸�A�A�z�z��Ȃǂ̈Ӑ}���Ȃ��`���̓��̓f�[�^���󂯕t���Ďg�p���Ă��邱�Ƃɂ���܂��B�΍�̓p�����[�^��������^�ł��邩�̌^�`�F�b�N�A�������͕�����^�ւ̌^�ϊ����s�����Ƃł��B��̗�͈ȉ��̒ʂ�ł��B

// �^�`�F�b�N���s���ꍇ
if(!is_string($sessionId)) {
    // �G���[�������s��
}
// �^�ϊ����s���ꍇ
$member = $db->sessions->findOne(array('sessionId' => (string)$sessionId));

�@�Ȃ��A���̂悤�ȉ��Z�q�}���̖��́A�p�����[�^�̃f�[�^�^���Œ�I�ȃv���O��������ɂ����Ă͔������Ȃ��ƍl�����܂��B�M�҂�PHP��Ruby on Rails�̃v���O�����Ŗ�肪���������邱�Ƃ��m�F���܂����B

�y�֘A�����N�z

Security - MongoDB Manual

http://docs.mongodb.org/manual/security/


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

Copyright © ITmedia, Inc. All Rights Reserved.

�X�|���T�[����̂��m�点PR

���ڂ̃e�[�}

4AI by ��IT - AI�����A�������A���A������
Microsoft �� Windows�őO��2025
AI for �G���W�j�A�����O
���[�R�[�h�^�m�[�R�[�h �Z���g���� by ��IT - IT�G���W�j�A���r�W�l�X�̒��S�Ŋ��􂷂�g�D��
Cloud Native Central by ��IT - �X�P�[���u���Ȕ\�͂�g�D��
�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