�����Ʋ��Ź�Ρ�PHP�ץ����ʡ��ǰ����ܤ��դ����֤˾����Ƥ����ܤ��� ��Ǥߤ���
�Ӥ�����ʸ��Ϥ�������
PHP5�Ǻ��Web���ץꥱ�������
��˾�β������о졪
�ǿ���ǽ�ޤ�Ƨ�߹�������Ƥȡ�ɬ�פʴĶ����Ͽ����CD-ROM�ǡ���¤˳ؤ�
��¤ˡġĤǤ�����
�ǽ��ư������ץ륳���ɤϤ����ʤäƤ����p.72�ˡ�
<html> <head><title>hello_world.php</title></head> <body> <?php $var_str="Hello World"; print ($var_str); ?> </body> </html>
�����϶���塢���Τ褦�˶�����٤�����
<?php $var_str = "Hello World"; print(htmlspecialchars($var_str)); ?>
HTML����Ϥ��Ƥ���Τ�����������htmlspecialchars()������롣 �ʥ������ƥ��ɤ��������������Ϥ����Ǥ����ס���
$_GET �ʤ��� $_POST ��Ȥ��ǽ�Υ���ץ�Ϥ����ʤäƤ��롣 ��3.1��֥����С��ȥ��饤����ȴ֤Υǡ����Τ��Ȥ��p.151��
<?php $name = $_POST['name']; print("���Υǡ�����������ޤ���<br />"); print("̾��:".$name."<br />"); ?>
�����������ȥ�����ץƥ����ȼ����������äȤ����Ĵ�Ҥǥ���ץ륳���� ��³����
3.3��֥ե�������פˤ���ʵ��Ҥ����롣��p.159��
$updir�˥��åץ����ɾ����������Ƥ��ޤ�����./upload/�פΡ�.�פϥ���� �ȥǥ��쥯�ȥ�Τ��Ȥǡ��̾盧��PHP������ץȤ��֤��Ƥ���ǥ��쥯�ȥ� ��ؤ��ޤ������åץ����ɥǥ��쥯�ȥ�ϥե�ѥ��ǻ��ꤷ�Ƥ���ޤ��� �̾�ϥ������ƥ�����������ͤ������Хѥ��ǻ��ꤷ�� �����ե�ѥ��Ǥϡ�������ץȤ��֤������Ѥ����ݤˡ������� ɬ�פˤʤ�ޤ���
�֥ե�����ݸ���ϳ�̡פ���ʵCGI�ץ���������¤���Ĺ���뵭�Ҥ��� ��������ʵ�����2002ǯ�����Ǥ����ȻפäƤ������ġġ� �������ƥ��Τ��Ȥ�ͤ���С����Хѥ�̾���֤�������ꤹ��褦�ˤ��� ������ץȤ����֤���Ԥ������ʾ���ռ����ʤ��������ѹ����ƻȤ��褦�� ����٤�����
3.7��Ρ֥��å��������Ѥ��뤿�������פˤϼ��ε��Ҥ����롣��p.188��
���å��������Ѥ���ˤϡ�php.ini ��ʲ��Τ褦�����ꤷ�Ƥ���������
(1) session.use_trans_sid = on
(2) session.save_path = Ǥ�դΥǥ��쥯�ȥ�
session.use_trans_sid �� on �ˤ��ƤϤ����ʤ��������� �Ϥ���� on �ˤ�����ͳ�ˤĤ��Ƽ��Τ褦�˸��äƤ��뤬��
�ǥ����Ǥ��롣(1)��on�ˤ���ȡ�PHP�Υ��å��������ؿ������Ѥ��ơ����å����ID�ΰ��� ����Ʃ��ʼ�ư��Ū�˹Ԥ���褦�ˤʤ�ޤ������Υѥ�����off �ˤʤäƤ����硢���å����ID�ϼ�ưŪ�˥����С�����������ʤ����ᡢ�� ��������������Ū�˼����Ϥ��Υ����å��Ҥ��ʤ���Фʤ�ޤ�����
�����������ɤ߿ʤ�ơ�6�ϡ֥ƥ�ץ졼�ȥ����ƥ��Ȥä��ܳʥ��ץꥱ�� ����� ���������塼��������פ��ɤ�Ǥߤ롣��������ǽ���äƤߤ��� �褦����
6.4��֥������Ƥߤ褦�פΡ֥�������桼���������å��ȥ��å���� �ϡפΥ����ɤϤ���������p.348��
function login_check($p_user, $p_pass) { $this->indi_check($p_user, "�桼����ID"); $this->indi_check($p_pass, "�ѥ����"); $sql = "SELECT user_id,user_name FROM user_table " ." WHERE user_id = '".$p_user."' " ." AND PASS_WORD = '".$p_pass."'"; $row_result = $this->db_object->getRow($sql,DB_FETCHMODE_ASSOC); if ($row_result["user_id"] == $p_user) { session_start(); ��ά�� } function sub_init() { ��ά�� $this->login_check($_POST["in_user_id"],$_POST["in_pass_word"]);
�褿���졣��indi_check�פϤʤ���� ������ҤȤĤΡ֤��ˤ��������פ���
p.340 �˽Ƥ��ä���
function indi_check($p_string, $p_name) { if (strlen($p_string) == 0) { $this->disp_err_message($p_name." ��ɬ�����Ϥ��Ƥ�������"); } }
æ�ϡ�SQL������������ȼ�������
�����ޤǤޤ�ޤ륺�Х�ŵ��Ū���ȼ�ѥ�����2004ǯ10��ȯ�ԤȤ����Ƕ� ���Ǥ��ܤ˽ФƤ��뤳�Ȥ˶ä�������ץ쥹�Ǥ⤳�����٤ʤΤ���
�ǡ��Ǹ�ޤǥѥ�ѥ�ȸ��������ɤ������ȼ����������Ϥ��ä��Τ��������ȡ� �������鼡�Υ�����ɤ�õ���Ƥߤ���
�ʤ����ɤ��ʤ���
����Τ���٤��ѤȤ��Ƽ��ʤɤ��ͤ����롣
�Ȥ������Τ餻���褿��������ʵ��Ҥ����ä���
[2] Perl �Υե����ޥå�ʸ����������ȼ���
����
��������ϡ�Perl �ǽ줿�ץ������������������������Ϥ� �줿�ե����ޥå�ʸ����Τޤ������ʤ��褦�ˤ��뤳�ȤDz� �褷�ޤ���
��������ʤ��ơ��ֳ����������Ϥ��줿ʸ�����ե����ޥå�ʸ����Ȥ��� �Ȥ�ʤ��褦�ˤ���פ�������*1��
�����Ǥ⥵�˥������ɸ�������
�ɤ���ȼ����Ǥ��������֥˥奦��祯�� ���Υޥޥĥ���ʥ��ʥ��ܥåȤ����ǡ��� �ȸ��äƤ����Ф���äݤ��ޤȤ�ʤ��Ȥ���äƤ��뤫�Τ褦��ʹ�����Ƥ��� ��*2�Ȥ����ġġ������Ƥ��줬�ʤˤʤ롣���Ĥ˶���������
�����˥������������ȤDz�褷�ޤ��פ�����Τ� �������ʤ��褦�ˤ������ȤDz�褷�ޤ��פ��֤��������äƥХ� �Х����
Advanced Web Statistics (AWStats) �ˤϡ����Ϥ�Ŭ�ڤ˥��˥��������ʤ��� �ɤ�ʣ�����ȼ���������ޤ���
bsmptd �ˤ����Ϥ��줿���ɥ쥹��Ŭ�ڤ˥��˥��������ʤ��ȼ���������ޤ���
�����ޤǥƥ�ץ첽���Ƥ���ȡ�����Ǥ�롣�Ȥ��������Ƥ��äƤ� ���ξ����ʤ����ʤ����������������Τ褦��*3�� CIAC��Debian�θ���ʸ�餷�ƥ��˥������ɸ����ˤʤäƤ��롣��
*1 ����˸����С��ե����ޥå�ʸ���� ������printf�ʤɤ��������ˤˤϾ�����ʸ����Ϳ���ʤ��褦�ˤ��� �Τ���������
*2 ���줬�ޤ�Perl���оݤ��Ȥ����ˤ⤽��äݤ�ʹ�����Ƥ��ޤ��Τ� �Թ�����
*3 ���ʤߤˡ�2006-01-12 �Τ�� �������ǤϤʤ��褦����cert.org �θ���ʸ���ˤϡ���Programs written in Perl that contain format string vulnerabilities should be changed to not include user data in format strings.�פȡ��������к���ˡ����Ƥ��롣
�Ȥ��������Ȥ�ĺ�������ޤ���
����ϡ֥��˥������Ȥ������դ�Ȥ��ʡפȤ�����ĥ�ǤϤ���ޤ��֤��⤽�⥵�˥��������ʤ��ƺѤ�褦�ˤ��٤����פȤ�����ĥ�Ǥ������������Ѥ���ȡ��֥��˥���������������ʡפȤ�����ĥ�ˤʤ�ޤ���
�֥��˥����������ʥ����ڡ��狼��ˤ�����ͳ��, ��̵��Ф���Τ�������, 2006ǯ1��5��
�Ȥ��롣�֥��˥���������������ʡץ����ڡ���Ǥ�褤�Τ����� ���ξ��ϼ���Ÿ����ͽ�ۤ���롣
�֥��˥���������ȸ����ʡפ��ĥ����ݤζ�����Ȥ��ơ�XSS��SQL���� �������Υ����������硢�����������ǥ��ϡ��֤��ξ��ʸ̮�ǥ� ��ʸ���Ȥʤ�ʸ���������פ��뤳�ȡפȤʤ�Τ�������������ȡ�
����˥������ȸ����Τ��ȻפäƤ��ޤ�����
�Τ褦�˸�����Τ����������֥��˥���������ȸ����ʡפǤϡ�ͭ���ʥ��� ��ڡ�����̤�����줽���ˤʤ��Τ���
�Ĥޤꡢ�֥��˥������פȤ����Ѹ줬���ƿͤ��Թ�Ǥɤ�ʰ�̣�ˤ��ᤵ�� ��Ȥ������ֱ��줿���աפˤʤäƤ��ꡢ�����Ѹ�Ȥ��ƻȤ�ʪ�ˤʤ�ʤ��ʤ� �Ƥ���Τ�����Ϥ䡢�֥��˥���������פϡ֥������ƥ��к�����פ�Ʊ�� �Ǥ����ʤ��������������դˤ�¸�߲��ͤ��ʤ����ä��ơ�����ΰ�̣��ؤ��� �ȤäƤ��̤ΰ�̣�Dz�ᤵ��Ƥ��ޤ��Τ����顢ͭ���Ǥ��롣
�����ǡ�sanitize�פθ���ΰ�̣�����ˡ����˥�������ؤ����դȤ��� �٤�����������褦�Ȥ��Ƥ⡢���31����������ĺ�����ȥ�å��Хå��Τ褦�ˡ����Τ褦��Ÿ���ˤʤäƤ��ޤ��褦����
Web ���ץꥱ�������ν��Ͻ����Ȥϡ�����Ū�ˡ�¾�Υ��ץꥱ�������˥ǡ������Ϥ��������ȻפäƤ��ޤ�����ά��
�ʤΤǻ�ϡ��־��Ǥ���פȤ������դˤĤ��Ƥ⡢
��ʬ�����äƤ��뤦���˱�������Ƥ��ޤä����⤷��ʤ��ǡ������Ǥ��� ����¾�Υ��ץꥱ���������Ϥ���
�ȼ�����äƤ���Τǡ��ä˰��´��Ϥʤ��ä��ꤷ�ޤ�����ά��
��ʬ�ˤȤäƳ���̵�������äƤ��������Ǥ⡢¾�Υ��ץꥱ���������Ϥ� �Ȥ��ˤϡ����Υ��ץꥱ�������ˤȤäƳ������뤫�⤷��ޤ����Ϥ���� �Υ��ץꥱ�������ˤȤäƳ������뤳�Ȥ�Ƚ�äƤ���ΤǤ���С������� �Ǥ��Ƥ����Ϥ��Ƥ����ޤ��礦��
���Τ褦�����Ӥ���*1�ˤʤ� �Ƥ��ޤ����⤦�ɤ����褦��ʤ������ʤΤǡ֥��˥������פȤ������ռ��Τ� �ΤƤ��ۤ���������
�ʤ����Ŀ�Ū�ˤϡ����˥���������ȸ����ʡפȤ�����ĥ�ˤϤ��ʤ� �����Ǥ��ޤ�������������������Ƥ��� hatomaru.dll �Ȥ����ץ� �����Ǥϡ�HTML�ν��Ϥ����˥����������������ڽƤ��ޤ��������٤Ƥ� DOM �ǽ�������Ƥ��� (������ InnerXml ���ͤ�ľ�ܥ��åȤ��ʤ� �ȷ��Ƥ���) �Τǡ����˥�������ռ�����ɬ�פ��ʤ��� �Ǥ�����������˵����ڤǤ�����
�֥��˥����������ʥ����ڡ��狼��ˤ�����ͳ��, ��̵��Ф���Τ�������, 2006ǯ1��5��
����ʸ�Ƥ⡢�֥��˥������פ�����ؤ��Ƥ���Τ��������Ǥ��롣�ɤ�� �ͤ��줾�줬����ˤ��������ʰ�̣���ɤ��������
���ˡ��֥��˥������פγ�ǰ����ڤ��Ƥ����аޤ�õ�äƤߤ롣
���31����������ĺ�����̤Υȥ�å��Хå� �Ǥϡ����Τ褦�˼�ĥ����Ƥ�����
���ڹ�������ΤȤ����ǰ����������ꤢ���äƤ���֥��˥����������ʥ���� �ڡ���פ�̩���˻�Ʊ���Ƥ���ΤǤ�������Ϥ������ʳ���HTML���λ��Ȥؤ� �������äƤ���CGI��¿��¸�ߤ��Ƥ����������֥��˥������������ʤ� ���٤���ΡפȤ���������Ĺ���Ƥ��ޤä��Τ��طʤȤ��Ƥ���ΤǤϤʤ� ���ȻפäƤ��ޤ���
�Ȥ������⡢���ˡ������ʳ���HTML���λ��Ȥؤν������äƤ��� CGI��¿��¸�ߤ��Ƥ����פȤ������夬���ꡢ���ν����Τ��Ȥ�֥��˥������� �ȸƤ�Ǥ����������ޤǤϤ褫�ä����Ѹ�λȤ����Ȥ��ơˡ����줬����CGI �������ʳ��Ǥν��֤ǤϤ�����פȤ����ͤ�������ڤ��Ƥ��ä��Ȥ��ˡ��ʤ� �������������֡�HTML���ϻ��Υ������������ˤΤ��Ȥ�֥��˥������פȸ� ���ڤ����ơ����줬���ߤޤǤ��μ�Ρָ���פ�������餻�븶���ȤʤäƤ� �ޤä��Ȥ������Ȥ���
��������ή��ϡ����Х����ƥ��12���ε����ˤ⸫���롣
�ǿ��ι����ˡ��Ŭ��������ά��
�㤨�С��֥�����ɥ�������SQL�����������פȤ�������ϡ������Υ� ���ȤǤϥƥ��ȹ��ܤȤ��Ƶ�Ť餤�����ι���ϡ�����Ū�˸����Ƥ��� ��SQL������������к��פǤ��ɤ��ʤ���ħ�����롣
����å��ϡ��桼��������������ͤ˥���������Ȥ����� ���������ɤȤ����SQL������������к���ռ�˼������ά��
������ɥ�������SQL�����������ϡ��������к�����̤��롣�� �ι�����ɤ��ˤϤ���ˡ���4�ˡ��ѿ���Ȥä�SQLʸ���Ȥ�Ω�ƤƤ� �뤹�٤ƤθĽ�ǥ��˥����������סʥ�å������ƥॽ��塼 �����5����Ĺ�һ��������Ȥ��礫���ʤ���
�۵������� Web���ץꡦ�������ƥ� ¿�ؤ��ɱҥ饤��ǥ����ƥ����, ���Х����ƥ��2005ǯ12���
���̤ˡ��ޥ����ߤ�ʪ�����緶���˸��������롣�������к��Ƥ�������� ���ɤ����äǤ⡢��������ֿ���������פǤ��뤫�Τ褦�˸�������*2���ᡢ �ְ�ä��к��Τ��Ȥ�ְ���Ū�˸����Ƥ�������������к��פȸ��虜��� ���ʤ��櫓����
�����Ϥǥ��˥������פ��뤳�Ȥ���ְ㤤�ʤΤ������������äƤ��ޤ��ȡ� �ְ���Ū�˸����Ƥ�������������к��פȸ��ä����Ȥ�̷�⤷�Ƥ��ޤ����ᡢ �֥��˥��������Τϸ���Ǥʤ��פ��Ȥˤ����������碌�褦�Ȥ��롣
���η�̡��֥��˥������ϸ���פȤ��������Τ��Ȥ�ʤ��ʤꡢ��SQLʸ ���Ȥ�Ω�ƤƤ��뤹�٤ƤθĽ�ǥ��˥���������פȸ��虜������ʤ��ʤ� �Ƥ��롣
������äơ֥��˥������פ���ˡ������ʤ����礵��Ƥ����������ơ����� ��ԤĤޤǤ�Ĥ���̤Ȥʤä���
���ˡ��֥��˥����������ʥ����ڡ���פ�ϤäƤ�ޤ��Ĥ����λ����� ���Ƥߤ롣
�Ĥޤꡢ���ä�����٤���������������PHP�ʤ�htmlspecialchars()�ˤ��̤��Ƥ��ʤ����餳�����֥��˥������פ���ɬ�פ��ФƤ���Ȥ�����̣������ά��
��������Υѥ�������������ʬ�ϡ����Τ褦�˽���������
$foo = htmlspecialchars(strip_tags($_GET['bar']), ENT_QUOTES);��ά��HTTP_USER_AGENT��HTTP_ACCEPT����������ʬ��Ʊ�ͤ˽������Ƥ��롣
$baz = htmlspecialchars(strip_tags($_SERVER['HTTP_USER_AGENT']), ENT_QUOTES);
CGI���Ϥ��Ф��륵�˥������Υ����ɤˤʤäƤ��롣�����餯���ѹ����Υץ� �����Ǥϡ�����κ���Ƥ����ΤǤ��������֡إ��˥�������= ʸ������� ������Ƥ��륱�����Ȼפ��롣
������ʸ�������äƤ�����ˡ�ϴ����ʤΤǻȤ�ʤ��褦�ˤ��Ƥ���ΤǤ����� �����ˤ�����ˡ��ɬ�פʤΤǤ��礦��?
������ʸ���������̤��褦�ˤ���Ȥ�����ˡ�ǤϤ���ʤΤǤ��礦��?
���Ȥ��С��ǡ����ե�������ե�����̾�ΰ�����CGI�Υѥ����� ���Ƽ������褦�ˤʤäƤ���Perl������ץȤʤ�/^[a-z]+$/�Τ褦������ɽ ��(Ruby�ʤ�\A[a-z]+\z/)�����Ԥ��Ƥ���ʸ���������äƤ��ʤ����� ���ǧ����(Perl�ξ���untaint�⤳��ǽ����)����äƤ����饨�顼�ˤ��� �Ȥ����Τ��� �������ƥ��к������˸����ܼ�Ū��ɬ�פʽ����פ��Ȼפ��ޤ���
����ʤΤϡ֥������ƥ��к������˸����ܼ�Ū��ɬ�פʽ����פǤϤʤ��� ��/^[a-z]+$/�Τ褦������ɽ���פ�Ȥ���ˡ�ϥ��˥������������Τ�ΤǤ��� �ơ��ޤ��˥������ƥ��к��Τ���ν����Ǥ���*3��
�������ȡ�
��������hatomaru.dll �ˤ⥵�˥������Υ롼����Ϥ���ޤ������Ȥ��С� http://bakera.jp/hatomaru.aspx/ebi �Ȥ��� URL �� /ebi ��ʬ�ϥѥ�̾�Ȥ� �ƽ��������褦�ˤʤäƤ��ơ��ǡ����ǥ��쥯�ȥ����� /ebi/ �ǥ��쥯 �ȥ�ˤ���ե�����˹Ԥ��褦�ˤʤäƤ��ޤ��������� ../ �ʤɤ���� �Ƥ��ޤ��ȡ����������Ǥ�դ� XML �ե����뤬�ɤޤ�Ƥ��ޤ������줬���� �ޤ��Τǡ�����ϰռ�Ū�ˡ֥��˥������פ��Ƥ��ޤ���
��ά�ˤ����֥��˥���������פȸ���ʤ��ƺѤ�褦�ʲ����äƤ���Τ� ���礦����
�֥��˥����������ʥ����ڡ��狼��ˤ�����ͳ��, ��̵��Ф���Τ�������, 2006ǯ1��5��
�֥��˥������פ�����ؤ���ǰ�Ȥ��Ƹ���Ƥ���Τ����狼��ʤ��������� Ū�ˤɤ�ʽ������н褷�Ƥ���Ȥ����äʤΤ����狼��ʤ������ѥ�̾�ѥ�� ���μ�갷���Ρ��������ץ����ǥ���ˡ�ϼ��Τ褦�ˤʤ������*4��
��ˡ(a): ���쥷���ƥ�Υ���ɥܥå���������Ȥ���
��ˡ(b): basename() �ʤɡ��ѥ�̾����ե�����̾��ʬ�ʺǸ����ʬ�ˤ����� ���Ф��ʸ��쥷���ƥब�Ѱդ��Ƥ����API��Ȥ����ե������������ �Ȥ����ǡ��ǥ��쥯�ȥ������ basename() ���̤����ե�����̾�Ȥ�Ϣ�� ���ƥѥ�̾����ꤹ�롣
�ݥ���Ȥϡ�OS����쥷���ƥ�����褦�ˤ��������ǽ������褦�Ȥ��ʤ��� �Ȥ�����../�פ�����å����뤳�Ȥ�֥��˥������פȸƤ֤Ȥ���С��ѥ�̾ ���ɤΤ褦�˲�ᤵ��뤫�ϡ��ե�������Ȥ��˸ƤӽФ����쥷���ƥ�� API�䤽�����OS��API�˰�¸���Ƥ��ޤ����ᡢ�֡�../�٤ǥ��˥����������� �ˡ�OS�ϡ�..\�٤��ᤷ���פʤɤȤ������Ȥ������Ƥ��ޤ������Ū�ˤϡ� ���쥷���ƥ��OS�Υѥ�̾��ᥢ�르�ꥺ������˥��ߥ�졼�Ȥ�����Ǹ� �����ʤ��¤ꡢ�֥��˥������פϴ������к��Ȥʤ�ʤ��ΤǤ��ꡢ̵�������롣
��ˡ(a)����Ѥ���ȡ��ѥ�̾�β��ʸ��쥷���ƥ����Ǥ�ˤ����ơ˺ǽ� �ʳ��ޤ�resolve���줿�ʳ��ǡ�ʸ̮�奢����������Ĥ��Ƥ���ѥ�̾�Ǥ��� ���Υ����å�����ưŪ������褦�ˤʤ롣��������������ˡ���Ȥ��ʤ������ ���䡢���ݤ�����ʴ���Ƥ��ʤ�����˷����Ȥ������⤢���������
��ˡ(b)�ϡ��ѥ�̾�Ȥ������ȡ��ե�����̾�Ȥ���������̤���ͤ����Ǥ��롣 CGI�ѥ��ΤҤȤĤ�ѥ�̾�Ȥ����߷פ���Τ��ơ��ե�����̾�Ȥ��� �߷פ���Ȥ������Ȥˤʤ롣¿���ξ��Ϥ�����ˡ�����ѤǤ���Ȼפ��롣
����������ebi/topic/2473�פ��ѥ��Ǥ���ʤ顢��ˡ(b)�Ϻ��ѤǤ��ʤ��� ���ξ��ϡ������̣httpd�ʤߤΥ��ץꥱ���������äƤ���褦�ʤ�� �ʤΤǡ��н褬ʣ���ˤʤ�Τϻ����ʤ��ȸ�����ΤǤϤʤ������ե������ �������ǡ����쥷���ƥब�Ѱդ��Ƥ���ѥ�̾���������ʥѥ�̾���� resolve�����API��Ȥäơ���Ū�̤�Υǥ��쥯�ȥ��ϰϤˤʤäƤ��뤫������� �����Ƴ����褦�ˤ���Τ��褤������������Ū���ϰϡפϡ��ե�������� �Ȥ���ץ��������ʸ̮�Ƿ�ޤ�Ϥ�����
�Ȥ����ǡ�
������ ../ �ʤɤ�����Ƥ��ޤ��ȡ����������Ǥ�դ� XML �ե����뤬�ɤޤ� �Ƥ��ޤ������줬����ޤ��Τǡ�����ϰռ�Ū�ˡ֥��˥������פ��Ƥ��ޤ���
�֥��˥����������ʥ����ڡ��狼��ˤ�����ͳ��, ��̵��Ф���Τ�������, 2006ǯ1��5��
�Ȥ���ʸ����仡����ˡ��⤷���ְռ�Ū���н褹�뤳�ȡפ�֥��˥������� �ȸƤ�Ǥ���Τʤ顢�����ñ�ˡ֥������ƥ��к��Ȥ��ƽ��֤���פȸ��� �Ф褤�ΤǤ��äơ��֥��˥������פȤ������դ�����Ф�ɬ�������ʤ���
�Ǹ�ˡ��֥��˥������פ˸Ǽ�����ͤ��䤨�ʤ������ˤĤ���õ�äƤߤ롣
�������饺�Х�����С�Perl�Τ�������
20�����λ��塢CGI�ץ�����ߥȤ�����Perl���ä���Perl�ϡ�open �ؿ��Τ褦�ˡ���ڤʽ������Ѱդ��Ƥ���Τ������å��ϥå�*5�������Ǥ��ä�Ⱦ�̡� ��ϴ�ʥץ�����೫ȯ������ϰʳ��ؤγμ¤��н褬���פȤʤ�ץ������ ��ȯ�ˤξ��̤Ǥϡ����ԤǤʤ��¤��ȼ�ʥץ�������Ƥ��ޤ����� �ʤ����Ƥ���ϤȤꤢ������ư���Ƥ��ޤ��ˤǤ���Ȥ���ͭ�������礭���ä���
������������˽줿�ȼ女���ɤ����������ƥ��к��Ȥ��ƽ��������ݡ� ���Ϥ��������ʸ�����������ˡ���Ȥ�줿�������ؤ����դȤ��ơ֥��� �������פγ�ǰ�����夷�Ƥ��ä���
�����˳�ȯ�������Ǥ⡢�֥֥�å��ꥹ���������к�ϳ�줬�����ƴ����� ����ۥ磻�ȥꥹ�������ǡפȤ������Ȥϸ������ΤΡ����������ΰ�̣ �ǤΡ֥��˥������פ����ƤǤ��ä���
shell���̤��Ƽ¹Ԥ���open�Τ褦�ʻȤ����Ϥ���٤��������Ȥ���硢 ���������к��פȤ����ΤϤʤ��ʤ��������������פ���Ȥ��äƤ⡢���� �ɤ�������������Τ���ʣ�������롣���Τ��ᡢPerl�������Ǥϡ��֥��˥��� ���פ��뤳�Ȥ�������������ν����פǤ��뤫�Τ褦��ǧ������Ƥ��ä��� �ʤ��줷�����褦���ʤ��ȹͤ���줿���ᡣ��
����ˡ�Taint��ǽ���������֤�����Taint��ǽ�����衢�ȼ�ʥ����ɤ� ����Ȥ��ʤ��뤫�⤷��ʤ��Ȥ��ˤˡ������ʤ��Ȥ������եƥ��ͥåȤȤ��� �����Ǥ���Ϥ������Ȥ�������Taint�ˤ����֤����äƽƤ���ͤ⤱�� ��������褦�ǡ�Taint���������ƥ��塢�ܼ�Ū������̤�����ΤǤ��� ���Τ褦�˻פ�����Ǥ���ͤ⤤��褦����
�㤨�м���ȯ���Ƥߤ롣
������˳�������ǡ�����������Ф⤦���������������Ƥ��� ��ǽ���������Τȴ��路�ޤ�����ưŪ����������ǡ����⡢������ˡ�ˤ�� �Ƥϱ�������Ƥ����ǽ��������Ȥ������Ǥ��͡�
������˱������줿�ȸ��äƤ⡢��ʬ�ˤȤäƳ���̵���ʤ����äƤ������ɤ� ���Ǥ�����ʬ�ˤȤäƤⳲ������ʤ顢���ξ�Ǿ��Ǥ��٤��Ǥ�����
�ֱ����פȤ�����ǰ������ȡ־��ǡפȤ�����ǰ�����礦���б�����褦�˸� ����Τ�������
�������ֱ����פȤ�����ǰ�ϡ�Taint�Ȥ�����ư�����եƥ��ͥåȵ�����¸� ����ˤ����ä�ɬ�פȤʤ복ǰ�ˤ����ʤ���
Taint�����ϡ���ưŪ�˴����ʡʲ�ǽ���Τ��������¹Զػߤˤ��뤿��ˡ� �ǡ����ե�����é�롣�͡������ϤȤʤ�����˰�¸�����ǡ����ե�����ֱ��� ���줿�פ�Τ�̾�դ���������Ϥʤ��ʤ����ޤ��͡��ߥǤ���櫓������ ����� Taint������Ȥ����ˤȤäơ֤��ޤ��פȤ��������Ǥ��äơ� ����Υ����奢�ץ�����ߥˤȤäơֱ����פ�ɬ�פʳ�ǰ�ǤϤʤ���
Taint��Ȥ虜������ʤ��褦��Perl�������ˤ�äơ��ֱ����פȡ־��ǡפ� ��ǰ����ޤ졢���������Ť�Perlʸ���αƶ������֥��˥������פ˸Ǽ������ �����ĤޤǤ�Ĥ�³���Ƥ��븶���ȤʤäƤ���ΤǤϤʤ�����������
*1 ��¾�Υ��ץꥱ�������˥ǡ������Ϥ��פȤϡ� HTML���Ϥ䡢SQLʸ�ι����Τ��Ȥ�ؤ��Ȼפ��뤬��HTML����Ϥ���Ȥ��� ��<�ס�>�ס�&�פΥ��������פ�ɬ�פǤ��뤳�Ȥ䡢HTML������° ���ͤ���Ϥ���Ȥ��ˡ�"..."�פ��������ͤˤϡ�"�פΥ��������פ�ɬ �פǤ��뤳�ȡ�SQLʸ��������Ȥ��ˡ�'...'�פ��������ͤˤϡ�'�פΥ������� �פ�ɬ�פǤ��뤳�Ȥʤɤϡ��������ƥ��Ȥ�̵�ط��ˡ�����Ϥ�ư��Ȥ��� �����ˤ��٤����ȤʤΤǤ��äơ����Ǥ��Ρ��������Τϴط��ʤ���
*2 �������к��Ƥ���Ȼפ�����Ǥ����ɼԤΤ���ˡ��������������Τ�������
*3 �������ƥ������� ����Ū�ʽ����Ȥ��ơ��ִ��Ԥ��Ƥ����ͤ������äƤ��ʤ����Ȥ��ǧ�פ� ���⤢�뤬�������CGI�ץ�������ؿ��ʤɤλ��ͤ˴�Ť��ƹԤ��٤��� ���ꡢ����ե��٥åȤ�����������Ȥ�����˽������ɽ�������ۤ�Ȥ��ˤ��� �ץ������λ��ͤʤΤ��ϵ��路����
*4 ���Τ�����ϡ����ۤ��륢�ץꥱ�������λ��ͤȤ��ơ��ǥ��쥯�ȥ�ΰ��� ��ɤΤ褦���߷פ��뤫�������ʤΤǡ��쳵�ˤϸ����ʤ�����
*5 �ϥå��Ȥϡ�����������¼�ŵ��2�Ǥˤ��С����ΰ�̣������Ȥ�����
hack
4 �Ը��� ����ԥ塼������ץ�����ߥ˰쿴����˼���Ȥ�; ������ʥץ�������(Ŭ����)���[�Ǥä�������]; ����ԥ塼���������ƥ�˿��������into��.
[����������¼�ŵ��2��]hacker
2 �Բ����äƤ�դ��ޤ������ʤ���, �Դ��Ѥʤ��, ����ʿ�, �¤ο�; #��¯�� �������[�������Ȥ�](����ԥ塼����)�ץ�����ޡ�.
[����������¼�ŵ��2��]
�衹������²Ȥ��Թ�ǡ�����ȼ²Ȥ�Ԥä��꤭���ꤷ�Ƥ��롣�轵���轵 �ϡ��Ǥ���碌��ֱ�����ɥ�������Ƥ��������Ƥ��ꡢ�����̤ˤ� ���Ѥ����Ǥ������Ƥޤ��Ȥ˿������ʤ����ȤȤʤäƤ��ޤä���
������ޡ�
�Ȥ��������Ȥ�ĺ�����������������Ф餯�δ֡����ä�����������Ȥ� �Ǥ������ˤʤ����Ȥꤢ��������ñ�˽�Ȥ��������Ƥ�����
JavaScript�ˤ��Ϣ³��ưPOST���褦�ʥ������ʰ��դ����륵���ȤȤ�����ꡢ�ȼ�ʥ������ˤ˥��å�����³���ˬ�䤹�뤳�Ȥ����롢�Ȥ�������Ǥ���ʤ顢���ڻ4/27�˽��к�ˡ�⡢�к��Ȥ��Ƥ��Դ����Ǥ���
���Ҥ�(A)�Ȥ����Τϡ�������PHP���å����Τ��Ȥ��Ȼפ��ޤ����������Ǥ���аʲ�����ˡ���ˤ뤳�Ȥ��Ǥ��ޤ���
- ��������������
- ���Υ��å�������������֤ǥ桼�����������Ƥ��ޤ��ʥ��å����ID���Ѥ��ʤ���
- ���å����ID��POST�ˤĤ�CSRF������
PHP : �֥ץ�����ߥ�����Ҥ��ȼ�����ɤ����뤫�פؤ�ȿ���Τ褦�ʤ��1, PEAK XOOPS ���ݡ���&�¸���
���̤ˡ�Session Fixation�ȼ����Τ��륵���Ȥ��Ф��ơ�Session Fixation�� �⤬��������Ȳ��ꤷ����硢����Ԥ����������Ȥ��Ф��ƥ��å����ϥ������ �����Ǥ��뤳�Ȥ��̣���롣���å����ϥ�����å��ˤ�äƤ⤿�餵������ �ﳲ�ν��� T_hijack �ȡ�CSRF (Session Riding)*1����ˤ�äƤ⤿�餵������ �ﳲ�ν��� T_csrf �ϡ�Ǥ�դ�Web���ץꥱ�������ˤ����� T_hijack �� T_csrf �δط��ˤ��롣�������äơ�CSRF (Session Riding)������ɻߺ���� ��ݤˤϡ�Session Fixation�ȼ������ʤ����Ȥ�����Ȥ���Τ������Ǥ���*2
�ޤ����֡ʰ��դ����륵���ȤȤ�����ꡢ�ȼ�ʥ����ȡˡפȽ�Ƥ��뤬�� �����θ�������������դ����륵���Ȥϼ�ͳ�˺�뤳�Ȥ��Ǥ��롣
�����줫����ˡ�������ι�����ɤ��ޤ���������4/27���� ���ˤϤɤ��ˤ����Ƥ��ޤ���
- �������������ǡ����å����ID���Ѥ���褦�ˤ��롣
- �������ʤ��¤ꥻ�å����ϳ��Ϥ��ʤ�
- session.use_only_cookies �� on �ˤ���
PHP : �֥ץ�����ߥ�����Ҥ��ȼ�����ɤ����뤫�פؤ�ȿ���Τ褦�ʤ��1, PEAK XOOPS ���ݡ���&�¸���
Session Fixation���ɻߺ��ˤĤ��Ƥϡ�Internet Week 2004��Ʊ2005�Υ��塼 �ȥꥢ����������Ƥ���*3����CSRF���������ɻߺ��θ�Ƥ�Ȥϴط����ʤ�����Ҥ��̤�ˡ�
�ޤ����֤����줫����ˡ�ǡ��ɤ���Ȥ����Τϸ���Ǥ����3���ܤ����Ǥ��� ���ʤ���礬����ˡ�
����
�ʤ�餫�Υץ�����������å���˻Ĥ��ǽ�������뤫��Ǥ���HTTP�إå��� ����å����ԲĤȽƤ��ä��Ȥ��Ƥ�ˡ�
PHP : �֥ץ�����ߥ�����Ҥ��ȼ�����ɤ����뤫�פؤ�ȿ���Τ褦�ʤ��1, PEAK XOOPS ���ݡ���&�¸���
�ޤ���cache�϶ػߤ���Τ������Ǥ��ꡢcache��ػߤ��Ƥ�cache�˻Ĥ��� �Ȥ����Τϡ�Web���ץꥱ����������Ǥ�ǤϤʤ����Ĥ�褦�����ʤ��ȼ��� �Ǥ��롣
Web���ץꥱ�������ʳ��ι������Ǥ��ȼ����αƶ�������ˤ���Web���ץꥱ�� �������߷���ˡ�ˤĤ��Ƹ����ʤ�С����å���������ѤΥ��å����ID�γ� Ǽ���ϡ�cookie���⡢hidden�ʥѥ��������POST���Ϥ����������Ǥ� ��*4���ʤ��ʤ顢cookie��ϳ�̤���֥饦�����ȼ����� ���Ĥ��뤳�Ȥˤ�륻�å����ϥ�����å��ζ��Ҥ��������������Ǥ��롣 ���¤ˤ�¿����Web���ץꥱ�������cookie��������Ѥ��Ƥ��뤬������ϡ� ����ʲ����߷פ���ǽ�Ǥ��뤳�Ȥ�ͥ�褷�Ƥ��뤿��Ǥ�����*5��
����
���������åȡʥȡ�����ˤΥ����ɤʤ�4/27�λ����Ǥ⡢����ä�õ�� �Ф�����Ǥ⸫�Ĥ��ä��Ϥ��Ǥ���
PHP : �֥ץ�����ߥ�����Ҥ��ȼ�����ɤ����뤫�פؤ�ȿ���Τ褦�ʤ��1, PEAK XOOPS ���ݡ���&�¸���
��̣���狼��ʤ���
����
�ʤ���SSL�λ�Ŧ�ˤĤ��Ƥϡ����ܻ�ν줿���Ȥ����ʴְ�äƤ��ޤ������⤷������ȡ����ڻ�ϡ֡طٹ�ʤ��̵�뤹����ɤ��٤ʤ�ƾ�������夲���顢���ä�����SSL�ΰ�����������̣��ʤ��ʤ��פȤ�����ĥ���⤷��ޤ���������������Ū�ʼ�ĥ�ȡ����Ҥ��ȼ�����Ʊ����¤٤�ȡ�������������Τ����ơ��ޤ��ܤ䤱��Ȼפ��ޤ���
PHP : �֥ץ�����ߥ�����Ҥ��ȼ�����ɤ����뤫�פؤ�ȿ���Τ褦�ʤ��2, PEAK XOOPS ���ݡ���&�¸���
����ϡ�
���ѥ����Ȥʤɤ�ñ�˰Ź沽����Ū�����ʤ�ץ饤�١���CA��ȯ�Ԥ������� ��Ǥ����ꤢ��ޤ�������ͦ, PHP�����Υĥ� �����奢�ץ�����ߥ���, ��ŷ��, p.213
�Τ��Ȥ���������ϵ���Ū�˴ְ㤤�Ǥ��롣�����ʴְ�äƤ��ʤ��פʤɤȤ� ���Τϵ���Ū�˴ְ㤤�Ǥ��롣ǧ�ڥѥ��θ��ڤ��Ǥ��ʤ�������ˤ��SSL�� ���ϡ�SSL�Ź��̿��Ȥ���������ư��ʤ��ΤǤ��äơ���İ���������Τ� �Τ��Ȥ������Ȥ��������ΤäƤۤ�����
����ʬ�ˤʤäƤ�ޤ������ѼԤ����μ�θ�������˸�ä��ߤ�ʤ�*6�Ȥ����Τϡ��ϤʤϤ�ò���路��������ʾ� ����ʤ��Ǥ��졣
�ʺ����ϻ�ˤϤ����ޤǤ�����;͵���ʤ�����
*1 �����Ǥϡ����å��� ���Ȥ�ʤ�CSRF������ä�������Ƥ��롣
*2 Ʊ�ͤλ���Ȥ��ơ��֤���CSRF�к���XSS�ȼ���������ȸ��̤��ʤ��פʤɤ� �����ͤ⸫���������Ȥ����뤬��XSS�ȼ�����Ʊ�������å����ϥ�����å� ���Ǥ��뤳�Ȥ��̣����ΤǤ��뤫�顢CSRF (Session Riding)������ɻߺ� ����ݤˤϡ����������XSS�ȼ������ӽ�����Ƥ��뤳�Ȥ�����Ȥ���� �������Ǥ��롣
*3 �ʤ���Session Fixation�ˤϡ�(1)���Ѥ��� ���ץꥱ��������Фˤ��ʤ�����Ū������ʻ��ѥɥᥤ��̾�ˤ��ˤ� ¾�ˡ�(2)���å�������������Ȥ���URL rewriting��������cookie�����ؤȼ� ư�ڴ������뵡ǽ����ĥ��ץꥵ�������ʸ�ͭ������ȡ�(3)PHP��ͭ������� ���Ȥߤ�����ʥ��å����ID�Ȥ���̵����ʸ�����Ϳ����Ȥ���å���� ID�Ȥ���ͭ���ʥ��å������äƤ��ޤ��Ȥ���PHP�η�١�����Dz����ǽ�ˡ� ��3���ब���롣
*4 �ºݡ���Ԥ�Web���ץꥱ�������Ϥ�����ˡ�Ǻ���Ƥ����� ���Ť�����¿���ä���
*5 ������ ��ƥ���Ż뤷������åԥ����ȤǤϡ��ѥ���ɤκ����Ϥˤ�륻�å��� �����Ų���Ϥ��ꡢ��¦��cookie��������¦��hidden��POST�����ȡ��ϥ��� ��åɹ�����ȤäƤ���Ȥ����⤢�롣
*6 �ष���ѼԤ�����ľ���Ȥ���������������������ַٹ𤬽Ф��� �Ź��̿��˰۾郎����褦�����פ���ľ�ˡ���SSL�Ź沽�Ȥ��Ƥ�����ʤ��� �ʤɤȤ������������Τϡ����ѼԤʤ�ǤϤǤ����ʪ�����ΤäƤ��뵤 �ˤʤäƤ���ˤ櫓��������������Ⱦü�ʵ��ѼԤ��ѼԤˤޤǸ�����İ ���ƹ����Ƥ��븽�¤����롣
�²Ȥη�Ϲ����ɤ���̤ǺѤߤ����ˤʤä��Τ�����˵��äƤ����� ί�ޤä��Ż��ν����ǰ���³�����֤��ʤ�������
�±��Ǥ���ϲ��⤹�뤳�Ȥ��Ǥ��ʤ��Τ��ɽ���
�����ܤϤʤ��ʤ��褤�� Web���ץ���ȼ������ä��ʤ�������������Ū�˾Ҳ𤵤�Ƥ��롣CSRF�� Session Fixation���ä�ޤޤ�Ƥ��롣 �����������פȤ����������äơ��ܺ٤ʲ������Ͻ�ʬ�Ǥʤ��ˤ��Ƥ⡢ �鿴��Web�ץ�����ޤ���Web�Υ������ƥ����ɤ�������ΤǤ���Τ������� ������ޤ����İ�����Τ˸���Ū�����������Τ������ο����������������� �������Ƥ��롣
�ޤ������ǼҤ��Խ��Ԥη����������Ԥ������äơ�ʸ�Τ�Ŭ�ڤǤ��뤷���� ����������ʤ���������Ⱦü�ʷ�������ä��ꤷ�Ƥ��ʤ������������������� ��Ĺ�����ͤʤ��褦��ɽ����ʤ���
�Ȥ����ǡ��Ƕ��IT�Ͻ��Ҥϡ�����ʸ����ʤ��Τ���ή�ˤʤäƤ��ޤä� �Τ���������Web�Ǹ�������кѤ�Τ�����Ȥ������ȤʤΤ���
��ͽ������������֤��ʤ��Τǥ�������