�y�֘A�L���z
�{���e�ɂ��ẴA�b�v�f�[�g�L�������J���Ă��܂��B���킹�Ă��m�F���������i�ҏW���j
Security&Trust�E�H�b�`�i60�j
���邱���킩����S��SQL�̌Ăяo���� �` ���؍_�����ɕ����Ă݂�
http://www.atmarkit.co.jp/fsecurity/column/ueno/60.html
�@Web�A�v���P�[�V�����ɑ���U����@��1�ł���SQL�C���W�F�N�V�����̑��݂́A���Ȃ�L���m����悤�ɂȂ����B�������A���̑�͂܂��{���ɗ�������Ă��Ȃ��悤�Ɏv����B�t�H�[������n���ꂽ�l�̓��ꕶ�����G�X�P�[�v������APHP��magic_quotes_gpc�Ƃ����������G�X�P�[�v�@�\���I���ɂ��邾���ő�����ɂȂ��Ă��Ȃ����낤���B
�@��{�͂������A�Z�J���h�I�[�_�[SQL�C���W�F�N�V������}���`�o�C�g�����𗘗p����SQL�C���W�F�N�V�����̍U���p�^�[����A���̑�Ȃǂ��������Ă݂悤�B
�@SQL�C���W�F�N�V�����iSQL Injection�j��Web�A�v���P�[�V�����ɑ���U����@��1�ŁASQL���g���ĕs���Ƀf�[�^�x�[�X�𑀍삷�邱�Ƃ�ړI�Ƃ��Ă���BSQL�Ƃ����̂́A�f�[�^�x�[�X�𑀍삷�邽�߂Ɉ�ʓI�Ɏg���Ă��錾��ł���B
�@����SQL�C���W�F�N�V�����ɂ��U���́A�����̐Ǝ㐫�u�[���i�H�j�̈�[��S����@�ł���A������i�@�\�iIPA�j�ɓ͂��o��ꂽWeb�A�v���P�[�V�����̐Ǝ㐫�֘A���i2006�N9���܂Łj�ɂ��ƁA��1�ʁi41%�j�̃N���X�T�C�g�X�N���v�e�B���O�ɑ����āA��2�ʁi21%�j��SQL�C���W�F�N�V�����ł���BWeb�A�v���P�[�V�����Ɍg����Ă��āA���̌��t��m��Ȃ��l�͂��Ȃ菭�Ȃ��Ȃ����i�Ǝv�������j�B
�@SQL�C���W�F�N�V�����̐Ǝ㐫���������A�v���P�[�V�����̂悭�����Ƃ��Ă͎��̂悤�Ȃ��̂ł���B
�@����́A���[�U�[���ƃp�X���[�h����͂��ă��O�C�����鏈���̈ꕔ�ł���Buid��pwd�̑g�ݍ��킹���A�f�[�^�x�[�X�̂��̂ƈ�v����ƔF����Ƃ����d�g�݂��Ƃ���B
SELECT * FROM user WHERE uid='$uid' AND pwd='$pwd'
�@���[�U�[����̓��͂́A���[�U�[����$uid�A�p�X���[�h��$pwd�ɓn�������̂Ƃ���B�����ŁA�ȉ��̂悤�ȓ��͂��������ꍇ�̋������l���Ă݂悤�B
�@$uid�@�@ �F�@�@ueno
�@$pwd�@�@�F�@�@' OR 'A'='A
�@�������͂����SQL�͈ȉ��̂悤�ɂȂ�B
SELECT * FROM user WHERE uid='ueno' AND pwd='' OR 'A'='A'
�@���ꂪ���s������OR�̌�͏�ɐ^�Ȃ̂ŁA�p�X���[�h���قȂ�ɂ�������炸�F����Ă��܂��Ƃ������ۂ��N���Ă��܂��B
�@�����Ŏ��グ���F�̉���ȊO�ɂ��ASELECT��DELETE�Ƃ�����SQL��p�����s���ȃf�[�^�x�[�X���삪���s�ł��Ă��܂��\��������B�e�[�u�����Ȃǂ�������Ȃ��ꍇ�ł��A�T�u�N�G���[�𗘗p���đ��݂���e�[�u���������ł���ꍇ������B
�y�֘A�����N�z�B����Ă���SQL�C���W�F�N�V����
�@���̖��̑�Ƃ��ẮA���͒l�ɂ͔��p�p�����݂̂�������悤����������@��A�ȉ��̗�̂悤��SQL�Ŏg������ꕶ�����G�X�P�[�v���đΏ�����Ƃ������@����ʓI�ɂȂ��Ă���B
�@' �@�@�@���@�@''
�@\�@�@�@���@�@\\
�y���z
�u\�v���g�����Ă�RDBMS�ł́u\\�v�ƃG�X�P�[�v����K�v������
�@���̑̂̕������͐������̂����ASQL�C���W�F�N�V�����𗝉����Ă��Ȃ����߁A�R��Ă���ꍇ������B
�@SQL�C���W�F�N�V������Ƃ��āA���͒l��K�ɃG�X�P�[�v����Ƃ�������s�����A���́u���͒l�v�����Ȃ̂��ԈႦ�Ă�����A�`�F�b�N���R��Ă���ꍇ�������Ό�����B�܂��AHTML������i�K�ŃG�X�P�[�v����悢�ƍl���Ă���l�������邪�A������ԈႢ�ł���B
�@�t�H�[���ɓ��͉\�ȕ�������������ł͂Ȃ��B�s���ȓ��͂̉\�����l����K�v������̂́AGET��POST�Ȃǂ̃N�G���[��Cookie�̒l�AHTTP�w�b�_�ȂǁAHTTP�o�R�ő����Ă�����́g���ׂāh�ƁA����ɉ����ăf�[�^�x�[�X��t�@�C���Ȃǂɕۑ����ꂽ�f�[�^���Ăяo���ۂɂ����ӂ��Ă͂Ȃ�Ȃ��B�����ɖ�肪����ƁA�Z�J���h�I�[�_�[SQL�C���W�F�N�V�����ƌĂ��Ǝ㐫�������ƂɂȂ�B
�@���̂悤��$uid�̒l���t�����Ƃ��Ɂu'�v���u''�v�Ƃ��ăG�X�P�[�v���ăf�[�^�x�[�X�ɕۑ������Ƃ���B
�@$uid�@�@�F�@�@�@ueno' union�c�c
�@��������G�X�P�[�v���ēo�^���Ă��A���Ƀf�[�^�x�[�X����Ăяo�����ۂɂ́A�G�X�P�[�v����Ă��Ȃ����̃f�[�^���Ăяo����邱�ƂɂȂ�B���̕������SQL�Ɏg�p���Ă��܂��ƁA������SQL�C���W�F�N�V�������������Ă��܂��B
�@���͂������_�ł����Ɍ��͂������ɁA���ɃA�v���P�[�V�����ŗ��p���ꂽ�Ƃ��Ɍ��͂����邱�̍U�����Z�J���h�I�[�_�[SQL�C���W�F�N�V�����ƌĂԁB
�@SQL�C���W�F�N�V������Ƃ����ƁA�u'�v�i�V���O���N�I�[�e�[�V�����j�̈������肪���ڂ���邪�A�u'�v���g��Ȃ��Ă���������U��������B
�@�ȉ��̗�����Ă݂悤�B
SELECT name FROM user where uid = '$uid' AND age > $age
�@����SQL�ɓn�����$uid��$age�̓��ꕶ���́A�K�ɃG�X�P�[�v����Ă���Ƃ��悤�B�����Ɏ��̂悤�Ȓl��n���B
�@$uid�@ �@�F�@�@ueno
�@$age�@�@�F�@�@31 UNION�c�c
�@�������͂����SQL�͈ȉ��̂悤�ɂȂ�B
SELECT name FROM user where uid = 'ueno' AND age > 31 UNION�c�c
�@��������s�����UNION�ȍ~��SQL�����s����Ă��܂����ƂɂȂ�B���̖��́Aage�̒l���V���O���N�I�[�e�[�V�����ň͂��Ă��Ȃ��������Ƃ������ł���B�ȉ��̂悤�Ɉ͂��Ă���A���̖��͋N���邱�Ƃ��Ȃ��i�������A���l�ȊO�͎t���Ȃ��Ƃ����O�i�K�̏������~�����j�B
SELECT name FROM user where uid = '$uid' AND age > '$age'
�@�}���`�o�C�g�����Ƃ����̂́A�V�t�gJIS��EUC-JP�Ȃǂ�2�o�C�g�����Ȃǂ̂��Ƃ��w���B���̃}���`�o�C�g������K�ɏ������Ȃ��Ǝv��ʂƂ����SQL�C���W�F�N�V�������������邱�Ƃ�����B
�@PHP�Ȃ��addslashes()�Ƃ����������g���āA�t�H�[�������������͒l�Ɋ܂܂��u'�v���u\'�v�ƒu������Ȃǂ̏���������SQL�C���W�F�N�V�����ɂ��U����������悤�Ƃ��邩������Ȃ��B
�@�ȉ��̗�����Ă݂悤�B
�@\x97' OR A=A�@�@�@���@�@�@�\' OR A=A
�@�u\x97' OR A=A�v��O�q�̂悤�Ɂu'�v���u\'�v�ƃG�X�P�[�v���ď������Ă݂�ƁA�u�\' OR A=A�v�ƕϊ�����邱�Ƃ�����B����̓V�t�gJIS�̊��Ŕ������錻�ۂ��B
�@���̌��ۂ��ڂ������Ă݂悤�B
�@\x97' �� \x97\'
�@�|�C���g�ƂȂ�̂́u\x97'�v�̕����ŁA����́u'�v���G�X�P�[�v���邽�߂Ɂu\'�v�ƒu������Ɓu\x97\'�v�ƂȂ�B
�@�u\'�v�̕������G���R�[�h���Ă݂�ƁA�u\x5C\x27�v�ƂȂ�A�S�̂ł́u\x97\x5C\x27�v�ƂȂ�B
�@\x97\x5C\x27 �� �\'
�@������ɖ߂��ƁA��O����u\x97\x5C�v��2�o�C�g�����Ƃ��Ĉ����āu�\�v�ƂȂ�A�u\x27�v��1�o�C�g�����Ƃ��Ĉ����Ă��܂��u'�v�ƂȂ�B
�@�\' OR A=A
�@���ʂƂ��āA�u'�v���u\'�v�ƃG�X�P�[�v�����͂��Ȃ̂ɁA�u'�v���c���Ă��܂��Ƃ������ۂ��N����B
�@�V�t�gJIS��2�o�C�g���������A���ɂ�2�o�C�g�ڂ�1�o�C�g�����̕����R�[�h���܂���������B���̂��߂ɂ��̂悤�Ȍ��ۂ��N����B
�@\x94\x5C �� �\
�@\x95\x5C �� �\
�@\x96\x5C �� �\
�@�u\x97'�v�̑g�ݍ��킹�ȊO�ɂ������̃p�^�[�����l������B�u'�v���u''�v�ƃG�X�P�[�v���Ă���ꍇ�ɂ����l�̌��ۂ��N����\��������B
�@�����������邽�߂ɂ́A�N���C�A���g���̕����R�[�h�ɃV�t�gJIS���g���̂���߂�EUC-JP�Ȃǂ��g���Ƃ������@���悢�B
�@�������A������ɂ�蕶���R�[�h��ύX�ł��Ȃ��Ƃ����ꍇ�����邩������Ȃ��B���̏ꍇ�ɂ́A���[��1�o�C�g�������t���Ȃ��������������A�ȉ��̂悤�Ƀ}���`�o�C�g����������ʂ��āA�����R�[�h������Ƃ����������B
�@PHP�Ȃǂŗp�ӂ���Ă���magic_quotes_gpc�Ƃ����������G�X�P�[�v�̋@�\���L���ɂȂ��Ă���ꍇ�ɂ͓��ɒ��ӂ��K�v�ł���B�v�������Ȃ��Ƃ���ŁA���̂悤�Ȍ��ۂ���������]�n���c���Ă���\��������B�ł��邾���S�̂ɗL���Ȏ����G�X�P�[�v�̋@�\�͖����ɂ��āA�K�v�Ȍ���K�ɃG�X�P�[�v�������邱�Ƃ��d�v�ł���B
�@���̃}���`�o�C�g�̖���SQL�C���W�F�N�V�����ȊO�ɁA�N���X�T�C�g�X�N���v�e�B���O�Ȃǂ̍U���ɂ����p�ł���̂ő�̍ۂɂ͌����Ƃ����Ȃ��悤�ɒ��ӂ��Ă������������B
�y�֘A�����N�z�}���`�o�C�g�̗��Ƃ����}���`�o�C�g�̗��Ƃ��� http://www.atmarkit.co.jp/fsecurity/rensai/hoshino10/hoshino01.html
�@SQL�C���W�F�N�V�������͂��n�߂�2005�N����ɔ�ׂ�ƁA���̎���͋Â������̂ɂȂ����B����͂���ɍI���Ȏ��������Ă���\��������BSQL�C���W�F�N�V������̃|�C���g���������Ă݂悤�B
�@���܂���\�[�X�R�[�h�Ɏ�����邱�Ƃ͂ł��Ȃ����A�V�X�e���͐������Ȃ���Ȃ�Ȃ��Ƃ����ł́AWAF�̓����͌��ʂ�����͂��ł���B
�@�܂��A�ǂ��1�����Ō���I�Ȏ�i�Ƃ����킯�ł͂Ȃ��̂ŁA��̍ۂɂ͕��p���ăZ�L�����e�B���x�������߂邱�Ƃ������߂���B
�@�����SQL�C���W�F�N�V�����ɓ������Đ������Ă���̂ŁA���SQL�C���W�F�N�V�������S�ɍs���Ă����B�������A�N���X�T�C�g�X�N���v�e�B���O�Ȃǂق��̃Z�L�����e�B��������Ď��{���Ă������������B
��� ��i������ ����j
������Ѓg���C�R�[�_��\�����
�l�b�g���[�N�E�Z�L�����e�B�č��A�Z�L�����e�B��E�^�p���P�R���T���e�B���O����ȋƖ��Ƃ��Ă���B
���Z�L�����e�B�𐢂ɍL����ׂ��A�u���⎷�M�����Ƃ��܂��܂ȕ��ʂŊ������B�ߒ��Ɂu����킩�郁�[���v���g�R���v�A�u����킩��TCP/IP�v�A�u����킩��HTTP�v�i�����ĉj�Ёj������B�l�u���O�́u���������w���L�v
�y2006/11/2�z
�{������SQL�Ŏg������ꕶ�����G�X�P�[�v��ɂ��āA���L�Ƃ��āu�u\�v���g�����Ă�RDBMS�ł́u\\�v�ƃG�X�P�[�v����K�v�������v��NjL�������܂����B
�܂��A�Z�J���h�I�[�_�[SQL�C���W�F�N�V�����̍��ɂ�����G�X�P�[�v����u\'�v����u''�v�֏C���������܂����B
�y2006/11/6�z
SQL�C���W�F�N�V������AWeb�A�v���P�[�V�����̑�ɂ��āA�u���͒l��SQL�̓��ꕶ����K�ɃG�X�P�[�v ���͒l���v���O�����i�v���Z�X�j�ɊO����������Ă������ �v���uSQL�ߍ��ނƂ���œ��ꕶ����K�ɃG�X�P�[�v�v�ɏC�����A�u�o�C���h���J�j�Y���̗��p�v��NjL�������܂����B
Copyright © ITmedia, Inc. All Rights Reserved.
��IT eBook
�ҏW������̂��m�点