การเข้ารหัสภาษาสคริปต์ไฟล์ PHP ด้วย Turck Mmcache บนระบ
Total Page:16
File Type:pdf, Size:1020Kb
การเขารหสภาษาสคร ปตไ ฟล PHP ดวย Turck MMCache บนระบบปฏบต การล)น*กซ ภษ ต รงโรจน หนวยปฏ บ ต การเทคโนโลย เคร อข าย ศนย เทคโนโลย อ เล !กทรอนกส และคอมพ วเตอร แห งชาต 1. บทน/า การเขย นภาษาสครปต บ นระบบปฏบ ตก ารลน กซ จะดาเนน การเขย นในลกษณะของ Plain text เป) นลกษณะของการเขย นใหท+ างานทล ะบรรทด แตส. าหรบโครงการขนาดใหญ. หรอ1 งานทต2 อ+ งการความ ปลอดภยสง5 ยกตวอย.างเชน. งานท2เกย2 วกบระบบเคร1อข.ายอนประกอบดว+ ยหมายเลขไอพ หรอ1 งานท2ม ความจาเป) นตอง+ ระบรหส การเขา+ ใชง+ านและรหสผา. นอยใ5. นสครปต ใ นลกษณะของการฝงในสครปต (Hard code) ลกษณะงานเหล.านBเมอ12 เผยแพร.ออกไปจะทาใหผ+ 5ท+ ม2 ค วามร5 + หรอ1 สามารถอา. นภาษาสครปต เข า+ ใจ สามารถทจ2 ะนาขอม+ ล5 บางสว. นเหลาน. นB ไปทาการทอ2 าจจะเป) นอนตราย หรอส1 ง. ผลกระทบในเชง การคา+ ได + การเขา+ รหสภาษาสครปต จ งD เป) นอก ทางเลอ1 กหนงทD2 ส2 ามารถนามาใชเพ+ อป12 +องกนปญหาเหล.านBไดใ+ นเบอ1B ง ตน+ ผลตภณฑ ยอดน ยมท น2 กพฒนานยมใช ม+ หลายตวด วยกน+ ตวอยางกรณศ. กษD า เชน. Zend encoder (www.zend.com) ผลตภณฑ เหล าน. ทB าออกมาในลกษณะเชงพาณ ชย ผท5 + ใช2 งานม+ ความจ าเป) น ตองซ+ อล1B ขส ทธ ซอฟตN แวร มาด วยราคาท+ ค2 อนข. างส+ ง5 และอกกรณหน งเมD2 อผล12 ตภณฑ ได ร+ บความนยมมา ก ก) จะมผ ท5 + ท2 าซอฟตแวร เพ อ12 ถอดรหสออกมาดวยเช+ นกน. ยกตวอยางเช. น. เมอเราพ12 มพ keyword คาวา. Zend decoder ลงในเวบไซด www.google.com ก)จะปรากฏผลลพธของเวบไซด ท ม2 Keyword เหลาน. จB านวน ถงD 508,000 เวบไซด สาหรบผลตภณฑ ซอฟต แวร ส าหรบการเขา+ รหสจากคายอ. น12 สามารถด5 ไดท+ http://2 www.patrickz.eu.org/content/Articles/PHP%20Script%20Encoder%20Compare.htm การแกป+ ญหาเรองล12 ขส ทธ ซอN ฟตแวร และการหาซอฟตแวร ท ใช2 ถ+ อดรหสไดง+ ายจากเวบไซด. ท 2วๆ ไป เราจงมD ความจ าเป) นตองหาทางเล+ อกใ1 นการใชซอฟต+ แวร ท ม2 ข อจ+ ากดดงนB 1. ฟร (Open source software) 2. ตดต งงB า. ย รองรบทงบนระบบปฏB บต การล น กซร ะดบเซอรเวอร (Redhat , Fedora , FreeBSD , Ubuntu Server , CentOS หรออ1 นๆ12 ) หรอระบบปฏ1 บต การว นโดว 3. มเวบไซด ย อดนยมหลายแห งท. 2วโลกนาไปใช + จากคณสมบต ท งB 3 ขอ+ หนงในทางเลD2 อ1 กซอฟตแวร ท จะน2 ามาใชส+ าหรบการแกป+ ญหานไดB + คอ1 Turck MMCache ซงจD2 ดเป) น PHP-Accelerator Software ประเภทหนงD2 2. เร1มตนตดตง3 Turck MMCach PHP API ไฟลท ใช2 ใ+ นการตดต งB Turck MMCache ถกพ5 ฒนาขนDB โดยใช + C Program สามารถดาวนโหลด ไดจ+ าก http://sourceforge.net/project/showfiles.php?group_id=69426 โดยมใหเล+ 1อกทงB ใน ร5ปแบบสาหรบตดต งB บนระบบปฎบ ตก ารลน กซ และระบบปฏบ ตก ารวน โดวส ในทน2 Bเราจะเนนท+ ก2 ารตดต งB บนระบบปฏบต การล น กซเป ) นหลก คณสมบต ของเซอร เวอร ท ท2 าการทดลองตดต งมB ค ณสมบต ของระบบปฏ บต การและเวอร ช นของภาษ2 า PHP ดงน B 1. Linux Fedora core4 2. PHP Version 5.04 2.1 เมอ12 ดาวนโหลดไฟล Turck MMCache มาแลวร+ 5ปแบบของไฟลจ ะถ5กบบอ ดในลกษณะของ tar.gz หรอ1 bzip ใหแ+ ตกไฟลดงกล าวโดยใช. ค+ าสง2 tar หรอ1 bunzip2 2.2 เม12อแตกไฟลออก จะได + Directory Turck MMCache ซงD2 ภายในจะประกอบดว+ ย Source code , Configuration file และ library สาหรบตดต งมากมายB แสดงดงรปท5 2 1 รปท5 2 1 แสดงรายชอไฟล12 ภายใต + Directory ของ Turck MMCache Step 1: เรมตK นL Configuration กาหนดคาท จK าเป! นตา งๆ สMาหรบ API Module (กรณาใช + root สาหรบตด ตงB ) ใชค+ าสง2 : #export PHP_PREFIX="/usr" #$PHP_PREFIX/bin/phpize จะไดผลล+ พธดงน B ( ในข นตอนนB จะมB การสร างไฟล+ configure ให เพ+ อให12 เหมาะสมกบ+ php version ท 2 ม ในเคร อง12 ) รปท5 2 2 แสดงการกาหนดคาท. จ2 าเป) นสาหรบ API Module Step 2: การกาหนดคาส Mาหรบการต ดต งS (Configure) ใชค+ าสง2 : #./configure --enable-MMCache=shared --with-php- config=$PHP_PREFIX/bin/php-config จะไดผลล+ พธดงน B รปท5 2 3 แสดงการ Configure เพอเร12 มท2 าการตดต งB Step 3: เรมตK ดต งดS วยการL Make และ Make install ใชค+ าสง2 : #make จะมกา ร Compile source code มหน าตาระหว+ างการต. ดต งแB สดงดงรปท5 2 4 รปท5 2 4 การ Compile Source code ดวยค+ าส2ง make ใชค+ าสง2 : #make install เพอต12 ดต งB และเคลอนย12 า+ ย Library ไปท 2 Directory ตาง. ๆ ทส2 าคญของระบบปฏบต การ หากการตด ตงสมบรB ณ5 ไมม. ป ญหาใดๆ เกดข นกDB )จะแสดงหนาจอ+ เสร)จสนดB งรปท5 2 5 รปท5 2 5 เสร)จสนกระบวนการตB ดต งB Step 4: เรมตK นแกL ไขL PHP Configuration file หรอ php.ini โดยปกตไฟล ท ก2 าหนดคณสมบต การใช งา+ น Environment หรอก1 าหนดคา. API ตาง. ๆ จะอยท5. 2 /etc/php.ini และหากมการต ดต งเสรB )จสมบรณ5 เราจะสามารถพบไฟล API ของ Turck MMCache ไดท+ 2 /usr/lib/php/modules/MMCache.so เชนกน. การกาหนดคณสมบต ของ Turck MMCache API ทาได + โดยการแกไ+ ข php.ini แลวท+ าตามขนตอนดงตB อไปน. B 1. ตรวจสอบไฟล /usr/lib/php/modules/MMCache.so วาม. หร อไม1 . (ขนB ตอนนจะไมB ม. ป ญหา เกดข นถDB าม+ การต ดต งเสรB )จสมบรณจาก5 Step1 – Step3) 2. แกไขไฟล+ /etc/php.ini โดยตรวจสอบบรรทด extension_dir = “/usr/lib/php/modules” (ซงจD2 ะตรงกบขอ+ 1 ขนB ตอนนจะไมB ม. ป ญหา ใดใดอกเช นกน. เพราะจะเป) นคา. default ทถ2 กก5 าหนดไวอย+ แล5. ว+ ) สรา+ ง Directory /tmp/MMCache แลว+ chmod 0777 เพอใช12 เก+ )บ cache 4. เพมบร2 รทดดงตอไปน. ลงใB น php.ini extension="MMCache.so" MMCache.shm_size="16" MMCache.cache_dir="/tmp/MMCache" MMCache.enable="1" MMCache.optimizer="1" MMCache.check_mtime="1" MMCache.debug="0" MMCache.filter="" MMCache.shm_max="0" MMCache.shm_ttl="0" MMCache.shm_prune_period="0" MMCache.shm_only="0" MMCache.compress="1" Step 5: การ Restart httpd เพอใหK อL านค าในไฟล php.ini ใหม การแกไขไฟล+ php.ini แลวน+ นB httpd จะไมร. ถ5 + งการเปลD ยนแปลง2 จาเป) นตองเร+ มต2 นให+ อ+ านไฟล. php.ini ใหม. ใชค+ าสง2 : #service httpd restart (กรณนตB ดต งบนB fedora core หากใชค+ ายอ. น12 คาสงท2 ใช2 ในกา+ ร restart httpd อาจจะตางจากน. )B รปท5 2 6 การ Restart httpd Step 6: ทดสอบการทางานของ API ดวยL phpinfo() ถาม+ การด าเนนการตามข นตอนB Step1 – Step5 เสร)จสนB ในขนตอนนB จะเรB มทด2 สอบวา. php รจ5 + ก turck MMCache API จรงหร อไม1 . โดยอาจจะเขยนไฟล ง ายๆ. เพอด12 5 Information ของ php ดงน B <?php phpinfo(); ?> การเรย กดผลล5 พธจะต องเร+ ย กดผ5 านทา. ง Browser จงมD ความจ าเป) นตองเข+ ยนใ น Web directory อาท เชน. /var/www/html เป) นตน+ ถาม+ การต ดต งเสรB )จสมบรณพร5 อมใช+ งานจะปรากฏ+ information ดงนB php information รปท5 2 7 การเรย กด 5 PHP Information จาก Step1 – Step6 เป) นอนวาม. การต ดต งB Turck MMCache แบบสมบรณ5 ลกษณะการทางานของ Turck mmacache นบวาม. ประโยชน เป ) นอยางมา. ก และสามารถนาไปใชงานอ+ น12 ๆ เชน. การกาหนด License หรอการก1 าหนดวนหมดอาย การใช งา+ น แมกระท+ 2งการเขารหสสคร+ ปต ไ ฟล PHP เพอป12 +องกน บคคลอ นล12 วงร. รหสการเข5 + ยนโปรแกร ม เป) นตน+ 3. เหตใดจงต* องใช Turck MMCache ? นอกเหนอจากต1 องการเข+ ารหสภา+ ษาสครปต และเป) นโปรแกรมเปดรหส (Open source software) แลว+ Turck MMCache ถกพ5 ฒนาขนมาDB เพอให12 รองร+ บการใชงานขอ+ ง PHP > 4.00 ซงถD2 าเป+ ) น เวอรช นต2 ากว2 า. 4.00 ลงมา ลกษณะการทางานของตวแปรภาษาจะเป) นลกษณะของ Interpreter คอ1 ทางานในลกษณะของการอานแล. วประมวลท+ ละบรรท2 ด ดงนนจB งมD การประมวลผลท ช2 ากว+ า. Binary file ท2 เขยนด วยภา+ ษาอน12 ๆ เชน. c หรอ1 Java ดงนนการแกB ป+ ญหาดงกลา. ว ทมงานพ ฒนา PHP โดย ZEND จงกD าหนดลกษณะใหสามาร+ ถ Compile ภาษา php ได + โดยเมอเร12 า run ไฟลใดใด Compiler จะทาการอาน. และประมวลผล เชค) ไวยากรณ แลวจ+ งทD างานในลกษณะของภาษาเครอง12 (Operation code) ดงนนการใชB + Turck MMCache จงเปD ) นการทางานในลกษณะของการเอา Source code ท 2 Compile แลวมาเก+ )บไวใ+ น cache เพอว12 าคราวหน. าเวลา+ เรยกใช งานอ+ ก รอบจะไดไม+ ต. อ+ ง Compile ใหม . วธ การน จะทB าใหการเร+ ยกหน าเว+ บ หรอการเร1 ยก php ใหท+ างานจะเร)วขนกวDB าเด. มมาก Compile Compile 1 Machine code Machine code Cache 2 1 Run Run รปท5 2 8 ทางานแบบธรรมดา รปท5 2 9 การใช + turck MMCache ชวย. จากรปท5 2 8 , 9 จะเห)นขนตอนการทB างานอยางช. ดเจนข นDB หากตองการท+ จะท2 าการทดลองในเรองขอ12 ง Benchmark วดเวลาในการท างานวาเร. )วกวากนมากน. อยแค+ ไหน. สามารถทาไดอ+ กเช นกน. โดยใช + /usr/bin/ab - apache HTTP server benchmarking tool แตในบ. ทความนBจะไมกล. าวถ. งการทD ดลองนB 4. ถาไมใช@ Turck MMCache แลวมซอฟตแวร ไหนอ )กบา ง? Turck MMCache ไมใช. ซอฟต. แวร ใหม . แตม. การใช งานกนมานา+ นแลวพอสมควรต+ งแตB ย. คของ php4 และเนองจากเป12 ) นลกษณะของซอฟตแวร เป ดรหส (Open source) จงมD โปรแกรมเ มอรไปพ ฒนา ตอย. อด สาหรบซอฟตแวร ท ว2 าน. นไดB แก+ . eAccelerator http://eaccelerator.sourceforge.net/ ซงผD2 5 + เขยนได ท+ าการศกษD า และอานความค. ดเห )นของผท5 + ใช2 งานในเวบไซด+ ต างประเทศ. ลวนแล+ วแต+ บอกว. า. ม การทางาน และ Performance ดมากในระดบ ใกลเค+ ยงก บ Zend Engine แตในบทความน. จะไมB พ. ดถ5 งD การทดลองใชงา+ น Software ดงกลา. ว นอกเหนอจากน1 จะเปB ) นในลกษณะเชงพาณ ชย ต องเส+ ยเง นซ อ1B ลขส ทธ ไดN กล+ าวและอ. างอ+ งเวบไซด ไว แล+ วใ+ นหวขอ+ “บทนา” 5. เร1มตนทดลองการเขารหสภาษาสคร ปต PHP สาหรบการเขารหสสคร+ ปต PHP มข นB ตอนดงน B 1. จากหวขอท+ 2 2 ขนB ตอนของการแตกไฟลท ผ2 านการบ. บอ ดมา ใน Directory ดงกลา. ว จะม ไฟลท ช2 อว12 า. encode.php เป) นไฟลท ใช2 ใ+ นการเขา+ รหส 2. ทดลองด 5 option ของ encode.php โดยการใชค+ าสงบนเทอร2 ม น ล php encode.php จะได + ผลลพธดงน B Usage: php -q encoder.php [options] source_file_name php -q encoder.php [options] source_file_name... php -q encoder.php [options] source_directory_name... Options: -s suffix encode files only with following suffix (default is "php") -a encode all files (no by default) -l follow symbolic links (no by default) -r encode directories recursively (no by default) -c copy files those shouldn't be encoded (no by default) -f overwrite existing files (no by default) -o target If you encode only one script then 'target' specifies an output file name. If you encode directory or several files at once Then 'target' specifies an output directory name. Examples: php -q encoder.php some_file.php php -q encoder.php some_file.php -o some_encoded_file.php php -q encoder.php *.php -o some_dir php -q encoder.php ~/public_html/x -rcf -sphp -sinc -o ~/public_html/y 3. ทดลองเขยน PHP Script ขนมาโดยตDB งชB อไ12 ฟลว า. input.php ดงนB <?php print “My Example”; ?> 4. เรมต2 นเข+ ารห+ ส input.php โดยตองการให+ ส+ งอ. อกไฟลท ม2 การ encode แลวม+ ช อว12 า. output.php ใชค+ าสงดงน2 B php -q encode.php -f input.php -o output.php คาแนะนา – อยาล. มว1 าเร. าใช + root ในการตดต งB หากจะ run ดวย+ user อน12 กรณาตรวจสอบ permission กอน. มฉะน นจะไมB สามารถสร. า+ ง output.php ได + 5. เมอเราด12 ผ5 ลลพธในไฟล output.php จะพบสครปต ท ผ2 านการเข. า+ รหสดงตอไปน. B <?php if (!is_callable("mmcache_load") && !@dl((PHP_OS=="WINNT"|| PHP_OS=="WIN32")?"TurckLoader.dll":"TurckLoader.so")) { die("This PHP script has been encoded with Turck MMcache, to run it you must install <a href=\"http://turck-mmcache.sourceforge.net/\">Turck MMCache or Turck Loader</a>");} return mmcache_load('eJzz9XV2dPZwZWBiYABhEIUBYIIajMxcQMq3UiG1I jG3ICfVjpGREYt6ABjbBkA=');?> พนท1B ส2 เท า คอ1 สวนท. ใช2 ในการตรวจ+ สอบการตดต งB API ของ Turck MMCache วาต. ดต งและB พรอมท+ จะท2 างานหรอไม1 . หากยงไมได. ม+ การต ดต งB API ดงกลา.