Sunday, March 30, 2014

PHP Configuration For PHP Website Development


-----
PHP Configuration For PHP Website Development

INTRODUCTION

The configuration file (php.ini) is read when PHP starts up. For the server module versions of PHP, this happens only once when the web server is started. For the CGI and CLI versions, it happens on every invocation.

STEPS

1) FINDING PHP CONFIG FILE.

Click the Source File button besides the PHP Config button in the Configuration Section of UwAmp.

2) EDITING PHP CONFIG FILE.

(If you have configured UwAmp to use Notepad++ to edit the text file, )  Notepad++ shows the content of PHP Config file ie, php.ini
Note: The location shown by the Notepad++ title bar is C:\UwAmp\bin\php\php-5.3.25\php_uwamp.ini. This path may differ subject to the location where UwAmp is stored.

3) GUI Approach To Learn PHP Extensions and Settings.

 UwAmp provides a friendlier interface for you to look at the settings and learn to use them.
3.1) PHP Extensions.
3.2) PHP Settings.

4) Using PHPSecInfo Script to check PHP Configurations.

PhpSecInfo provides an equivalent to the phpinfo() function that reports security information about the PHP environment, and offers suggestions for improvement. It is not a replacement for secure development techniques, and does not do any kind of code or app auditing, but can be a useful tool in a multilayered security approach.
4.1) Download the phpsecinfo.zip here.
4.2) Extract the folder phpsecinfo-20070406, copy it into www folder and rename as “phpsecinfo”.
4.4) Click on More Information link to learn more on the issues mentioned.

FURTHER EXERCISE

Run phpsecinfo on your XAMPP site and compare the results.

HTTPD Configuration For PHP Website Development


-----
HTTPD Configuration For PHP Website Development

INTRODUCTION

Apache HTTP Server is configured by placing directives in plain text configuration files. The main configuration file is usually called httpd.conf. The location of this file is set at compile-time, but may be overridden with the -f command line flag. In addition, other configuration files may be added using the Include directive, and wildcards can be used to include many configuration files. Any directive may be placed in any of these configuration files. Changes to the main configuration files are only recognized by httpd when it is started or restarted.

PREPARATION

This tutorial uses UwAmp server package.
Set the Text Editor value as the path pointing to Notepad++ program.

STEPS

1) FINDING HTTPD CONFIG FILE.

Click the Source File button besides the Apache Config button in the Configuration Section of UwAmp.

2) EDITING HTTPD CONFIG FILE.

(If you have configured UwAmp to use Notepad++ to edit the text file, )  Notepad++ shows the content of Apache Config file ie, httpd.conf
Note: The location shown by the Notepad++ title bar is C:\UwAmp\bin\apache\conf\httpd_uwamp.conf. This path may differ subject to the location where UwAmp is stored.

3) SYNTAX.

httpd configuration files contain one directive per line. The backslash "\" may be used as the last character on a line to indicate that the directive continues onto the next line. There must be no other characters or white space between the backslash and the end of the line.
Arguments to directives are separated by whitespace. If an argument contains spaces, you must enclose that argument in quotes.
Directives in the configuration files are case-insensitive, but arguments to directives are often case sensitive. Lines that begin with the hash character "#" are considered comments, and are ignored. Comments may not be included on a line after a configuration directive. Blank lines and white space occurring before a directive are ignored, so you may indent directives for clarity.

4) MODULES.

httpd is a modular server. This implies that only the most basic functionality is included in the core server. Extended features are available through modules which can be loaded into httpd. By default, a base set of modules is included in the server at compile-time. If the server is compiled to use dynamically loaded modules, then modules can be compiled separately and added at any time using the LoadModule directive. Otherwise, httpd must be recompiled to add or remove modules. Configuration directives may be included conditional on a presence of a particular module by enclosing them in an <IfModule> block. However, <IfModule> blocks are not required, and in some cases may mask the fact that you're missing an important module.

5) SCOPE OF DIRECTIVES.

Directives placed in the main configuration files apply to the entire server. If you wish to change the configuration for only a part of the server, you can scope your directives by placing them in <Directory>, <DirectoryMatch>, <Files>, <FilesMatch>, <Location>, and <LocationMatch> sections. These sections limit the application of the directives which they enclose to particular filesystem locations or URLs. They can also be nested, allowing for very fine grained configuration.
httpd has the capability to serve many different websites simultaneously. This is called Virtual Hosting. Directives can also be scoped by placing them inside <VirtualHost> sections, so that they will only apply to requests for a particular website.

6) PHP Configuration.

6a) Registering PHP interpreter.
6b) Registering valid file extension for PHP Interpreter to execute.

7) UWAMP ADDITIONAL SETTINGS

Filename: C:\UwAmp\UwAmp README

_   _           ___                  
| | | |         / _ \                
| | | |_      _/ /_\ \_ __ ___  _ __  
| | | \ \ /\ / /  _  | '_ ` _ \| '_ \
| |_| |\ V  V /| | | | | | | | | |_) |
 \___/  \_/\_/ \_| |_/_| |_| |_| .__/
                               | |    
                               |_|    
01010101 01110111 01000001 01101101 01110000
V 2.2.1                www.uwamp.com
--------------------------------------------
Apache config file :
        UwAmp\bin\apache\conf\httpd_uwamp.conf
PHP config file :
        UwAmp\bin\php\CURRENT PHP VERSION\php_uwamp.ini
                
MYSQL config file :
        UwAmp\bin\database\mysql\my_uwamp.ini
MYSQL PASSWORD :
        user : root
        password : root
Available Macro in setting:
        {TEMPPATH}                        = UwAmp\temp
        {APACHEPATH}                         = UwAmp\bin\apache
        {DOCUMENTPATH}                         = UwAmp\www
        {PHPAPPS}                        = UwAMp\phpapps
        {PHPPATH}                         = UwAmp\bin\php\CURRENT PHP IN UWAMP CONTROL\
        {PHPAPACHE2FILE}                 = UwAmp\bin\php\CURRENT PHP IN UWAMP CONTROL\CURRENT apache2.dll
        {PHPEXTPATH}                         = UwAmp\bin\php\CURRENT PHP IN UWAMP CONTROL\ext
        {PHPZENDPATH}                         = UwAmp\bin\php\CURRENT PHP IN UWAMP CONTROL\zend_ext
        {PHPMODULENAME}                        = Module name of current php version
        {LISTEN_VIRTUAL_HOST_PORT}        = Apache Listens ports
        {MYSQLPATH}                        = UwAmp\bin\database\mysql\
        {MYSQLBINPATH}                        = UwAmp\bin\database\mysql\bin
        {MYSQLDATAPATH}                        = UwAmp\bin\database\mysql\data
        {ONLINE_MODE}                        = Order allow,deny
                                          Allow from all
                        OR
                                        = Order deny,allow
                                          Allow from 127.0.0.1 localhost
        if ONLINE_MODE is set to Online the serveur is available for all IP
        if ONLINE_MODE is set to Offline the serveur is available just for 127.0.0.1

8) FURTHER EXERCISE

Check the httpd file for XAMPP for the above items.
8.1) httpd.conf
8.2) httpd-xampp.conf

Wednesday, January 1, 2014

Pengenalan Pengaturcaraan Web Menggunakan PHP dan USBWebServer

-----

Internet and Worldwide Web

Internet adalah gabungan rangkaian komputer serata dunia. Gabungan ini melibatkan penggunaan berbagai jenis perkakasan dan perisian komputer yang dimiliki oleh syarikat telekomunikasi, organisasi awam dan orang persendirian. Melalui gabungan rangkaian ini, pelbagai perkhidmatan berasaskan pertukaran data dapat diwujudkan termasuklah Worldwide Web (Web).
Antara teknologi utama yang digunakan di dalam Internet ialah TCP/IP. TCP bermaksud Transfer Control Protocol. Ia merangkumi aspek pemindahan data dari satu peranti komunikasi (communication device) ke peranti yang lain. IP bermaksud Internet Protocol. Ia merangkumi aspek penentuan lokasi setiap komputer yang berada di dalam rangkaian Internet (atau mana2 rangkaian setempat yang menggunakan teknologi TCP/IP). Melalui teknologi TCP/IP, maklumat elektronik dapat dihantar dari satu komputer ke komputer yang lain dengan cekap meskipun jarak perhubungan ini sangat jauh.
Lihat klip video ini untuk memahami bagaimana teknologi TCP/IP berfungsi (http://www.youtube.com/watch?v=Ve7_4ot-Dzs)

Worldwide Web (Web)

Worldwide Web atau WEB adalah sejenis perkhidmatan perkongsian dokumen dan aplikasi elektronik melalui rangkaian Internet. Pertukaran data elektronik dilakukan dengan berdasarkan teknologi HTTP (Hyper Text Transfer Protocol). Apabila dua komputer berhubung melalui kaedah HTTP, kedua-duanya akan melalui kitaran yang dipanggil HTTP Request/Response

HTTP Request/Response Basics

HTTP Request/Response adalah sebahagian dari kitaran perhubungan di antara dua mesin yang berinteraksi menggunakan teknologi HTTP melalui rangkaian Internet. Maklumat lanjut tentangnya boleh dibaca di http://devhub.fm/http-requestresponse-basics/.
Ringkasnya:
1. Perhubungan bermula apabila pengguna melawat sesebuah tapak web melalui URL tapak tersebut, e.g google.com
2. Komputer pengguna akan menghantar HTTP Request untuk mendapatkan laman web di komputer google.com.
3. Komputer google.com menerima HTTP Request, lalu memprosesnya dan mengembalikan data yang diperlukan melalui HTTP Response.

Client-Server Architecture

Client-Server Architecture adalah satu senibina perhubungan komputer di mana peranan dua komputer yang sedang berinteraksi melalui rangkaian komputer (seperti Internet) ditakrif sebagai Client (komputer yang memohon data, iaitu HTTP Request) dan Server (komputer yang melayan permohonan data, iaitu HTTP Response).
Sesebuah komputer Client perlu mempunyai perisian Web Client seperti perisian Web Browser untuk membolehkannya menghantar isyarat HTTP Request dan memaparkan isyarat HTTP Response yang diterima dari Server.
Sesebuah komputer Server pula perlu mempunyai perisian Web Server seperti Apache, Microsoft IIS atau Apple OS X untuk membolehkannya menerima isyarat HTTP Request, memproses permohonan dan memulangkan isyarat HTTP Response ke komputer Client.

History of Web Browsers

Terdapat berbagai perisian Web Browser yang digunakan pada hari ini. Sejarah perisian ini bermula pada tahun 1990 pada Tim Berners Lee memperkenalkan teknologi Web. Lihat infografik berikut untuk mengikuti perjalanan sejarah Web Browser.

History of Web Server Software

Web Server pertama di dunia terletak di URL http://info.cern.ch/. Jika anda melawatnya, anda berpeluang membaca kisah tentangnya termasuklah komputer pertama (komputer NEXT) yang menjadi hos perkhidmatan ini.
Perisian Web Server yang pertama dikenali sebagai CERN HTTPD (http://en.wikipedia.org/wiki/CERN_httpd), kemudiannya diikuti oleh NCSA HTTPD (http://en.wikipedia.org/wiki/NCSA_HTTPd). Pembangunan perisian NCSA HTTPD diteruskan oleh projek Apache (http://en.wikipedia.org/wiki/Apache_HTTP_Server). Projek Apache terus berkembang sehingga sekarang. Pada tahun 2009, ia telah mencatat rekod melepasi jumlah penggunaan oleh 100 juta tapak web.
Antara perisian Web Server terawal selain Apache adalah Netscape Enterprise Server 1994 (http://en.wikipedia.org/wiki/Netscape_Enterprise_Server) yang kini dikenali sebagai Oracle iPlanet Web Server (http://en.wikipedia.org/wiki/Oracle_iPlanet_Web_Server). Syarikat perisian gergasi Microsoft turut mempunyai perisian Web Server sendiri yang dipanngil Internet Information Service, IIS yang mula diedar melalui perisian Sistem Operasi NT seawal tahun 1995 (http://en.wikipedia.org/wiki/Internet_Information_Services).(Lihat juga imbasan sejarah syarikat Microsoft terhadap pembabitan mereka di dalam Web, http://www.microsoft.com/misc/features/features_flshbk.htm)
Pada hari ini terdapat berbagai produk perisian Web Server (lihat http://en.wikipedia.org/wiki/Comparison_of_web_server_software).
Apache masih kekal popular dan terdapat berbagai jenis produk variant yang dihasilkan daripadanya. Tutorial dalam dokumen ini juga akan menggunakan perisian Apache yang diedarkan olehhttp://www.usbwebserver.net/en/

Web Application Development

Pembangunan Aplikasi Web merujuk kepada aktiviti membangunkan perisian yang dicapai melalui persekitaran Web. Oleh kerana bahasa asal Web iaitu HTML adalah terhad kepada paparan maklumat, bahasa pengaturcaraan khas diperlukan untuk menjalankan aktiviti pemprosesan maklumat yang akan dijalankan oleh Server Machine. Antara bahasa pengaturcaraan popular pada hari ini termasuklah PHP (PHP Hypertext Processor), ASP (Active Server Page) dan JSP (Java Server Page). Ketiga-tiga bahasa ini mempunyai sejarah dan komuniti yang tersendiri.
PHP pernah merekodkan catatan sebagai bahasa pengaturcaraan yang digunakan oleh sejumlah 20 juta Internet Domain pada bulan April 2007. PHP juga turut dicatatkan sebagai penyumbang kepada 30% Web Vulnerabilities. Antara punca yang dikenalpasti adalah kelalaian pengaturcara di samping ralat teknikal pada bahasa tersebut.
Memandangkan Bahasa PHP adalah antara yang popular dan isu pertahanannya juga kritikal, tutorial dalam dokumen ini memberikan tumpuan kepada aspek pertahanan Web melalui perspektif pengaturcaraan PHP.

Categories of Web Vulnerabilities

1) Kegagalan Proses Penentusahan (Authentication), 62% - Kegagalan pada mekanisma login yang membolehkan penyerang mengesan katakunci yang lemah, melancarkan serangan bertubi-tubi (brute force) atau melangkaui sekatan login.
2) Kegagalan Kawalan Capaian (Access Control), 71 % - Kegagalan mengawal capaian sumber mengakibatkan penceroboh dapat memperolehi maklumat atau memperolehi status Pengguna Pentadbir (Admin User).
3) Injeksi SQL (SQL Injection), 32% - Penyerang berjaya mengubahsuai kod input sehingga mengakibatkan sistem hujung-belakang (back-end) memproses input yang memberi kelebihan kepadanya samada untuk memperolehi atau membuat pemprosesan data.
4) Serangan Skrip Silang-Tapak (Cross-Site Scripting), 94% - Penyerang mensasarkan pengguna lain, mencapai data mereka, bertindak di bawah identiti mereka atau menyerang mereka.
5) Kebocoran Maklumat, 78% - Aplikasi membocorkan maklumat akibat kegagalan sistem menangani ralat atau apa-apa insiden lain.
6) Pemalsuan Silang-Tapak (Cross-Site forgery), 92% - Penyerang memperdaya pengguna menggunakan skrip di tapaknya untuk berinteraksi dan mencapai akses aplikasi mangsa.

Web and Database Server

Kebanyakan Aplikasi Web menyimpan, memproses dan menghantar data dalam kuantiti yang sangat besar. Oleh itu perisian Database Server merupakan sokongan utama terhadap Web Server sedia ada. Antara perisian Database Server yang popular termasuklah MySQL, MSSQL Oracle dan Access (http://www.w3schools.com/hosting/host_databases.asp).

Apache-MySQL-PHP (AMP) Package

Apache, MySQL dan PHP pada mulanya adalah produk berasingan bagi memenuhi objektif tersendiri di dalam persekitaran Web; Apache digunakan untuk memproses HTTP, MySQL digunakan untuk menyimpan data manakala PHP digunakan untuk memproses data dalam aplikasi Web. Walaubagaimanapun, memandangkan ketiga-tiganya diedarkan sebagai Perisian Sumber Terbuka, komuniti pengaturcara telah menggabungkannya ke dalam satu pakej untuk memudahkan aktiviti pembangunan perisian dimulakan. Pakej ini dikenali sebagai AMP (http://en.wikipedia.org/wiki/List_of_Apache%E2%80%93MySQL%E2%80%93PHP_packages). Jika ia dijalankan di dalam WIndows, ia dipanggil WAMP. Jika ia dijalankan di dalam Linux, ia dipanggil LAMP. Walaupun sistem operasi berbeza, pakej AMP tetap akan menghasilkan output, iaitu hasil pemprosesan maklumat yang sama. Pengguna juga akan melihat paparan yang sama meskipun menggunakan perisian Web Browser yang berbeza.
Pakej AMP yang digunakan dalam tutorial ini diambil dari http://www.usbwebserver.net/en/.
Sekiranya anda mahu mencuba pakej LAMP (Linux-Apache-MySQL-PHP), pakej terkini yang paling mudah ialah SLAMPP (http://slampp.abangadek.com/info/ tarikh akses: 6 Okt 2012). Pautan yang diberikan menyediakan anda sumber Live CD Linux Slackware yang telah siap dipasang dengan perisian XAMPP (http://www.apachefriends.org). Live CD tersebut turut menyediakan fungsi pemasangan terus ke Hard Disk di mana anda boleh pilih sama ada mahu memasang ke Hard Disk Fizikal atau melalui Sistem Maya seperti VirtualBox atau VMWare.

USBWebServer Package

Pakej USBWebserver adalah satu rangkuman perisian Apache-MySQL-PHP yang dihasilkan oleh sebuah syarikat Jerman untuk dijalankan di dalam persekitaran Windows. Ianya berkonsepkan portable, iaitu boleh dipindah dan dijalankan tanpa perlu pemasangan ke dalam sistem Windows. Keanjalan ini sangat berguna kerana pengaturcara boleh memindahkan kandungan program dan data ke mana-mana peranti tanpa perlu mengganggu tetapan Windows.
Di samping itu, USBWebserver menyediakan paparan Control Panel (seperti di atas) yang memudahkan pengguna membuat tetapan yang berkaitan. Paparan ini sangat mudah digunakan dan ia amat praktikal untuk persekitaran pembangunan (Development Environment). USBWebserver tidak disyorkan untuk persekitaran pengeluaran (Production Environment).

Running PHP-powered Apache Web Server for first time

1. Download perisian USBWebserver dari laman web http://www.usbwebserver.net/en/. Ketika dokumen ini ditulis, ia berada pada versi 8.5. Versi 8.5 menyokong PHP5, Apache 2, MySQL5 dan Sqlite 3. Ia cukup untuk menyokong keperluan semua tutorial dalam dokumen ini.
2. Sebaiknya letakkan Directory Pangkal (Root Directory) pada C:\ seperti ilustrasi di bawah:
C........        [USBW]........        [apache2]
                        [lang]
                                        [mysql]
                        [php]
                                        [phpmyadmin]
                        [root]
                                        [settings]
                        usbwebserver.exe 
3. Double-Click ikon usbwebserver.exe. (imej ikon tertera seperti di atas).
4. Tetingkap Control Panel akan muncul seperti di bawah.
5. Lihat butang tertulis “Localhost”. Klik butang tersebut. Tetingkap Web Browser akan mempamerkan laman seperti di bawah.
6. Lihat pautan “Click here to go to the PHPINFO file”. Laman PHPINFO akan dipamerkan seperti di bawah. Secara ringkasnya, laman ini adalah isyarat bahawa PHP dalam keadaan tersedia. Anda mungkin perlu merujuk laman ini ketika mengikuti tutorial selanjutnya.
7. Kembali semula ke USBW Control Panel. Lihat butang tertulis “Root dir”. Klik butang tersebut. Windows File Explorer akan memaparkan kandungan direktori pangkal web (Web Root Directory).
C........        [USBW]........        [apache2]
                        [lang]
                                        [mysql]
                        [php]
                                        [phpmyadmin]
                        [root]
                                        [settings]
                        usbwebserver.exe
8. Sehingga ke tahap ini, anda perlu ingat dua perkara berikut:
8.1. URL untuk website adalah http://localhost:8080
8.2. LOCAL PATH untuk website adalah C:\USBW\ROOT\
9. Cipta direktori baru di bawah ROOT, namakannya “mypage”, perhatikan laluan berikut:
9.1. URL untuk website adalah http://localhost:8080/mypage
9.2. LOCAL PATH untuk website adalah C:\USBW\ROOT\mypage
10. Dengan menggunakan program Notepad++(http://portableapps.com/apps/development/notepadpp_portable) atau Notepad biasa, cipta File helloworld.php, Save di dalam direktori mypage. Taip kod berikut ke dalam helloworld.php
<?php
echo "Hello World";
?>

Labels