Web development security

Most audience in Facebook Groups;
Total liked and shared within Facebook network;

Minggu ni aku nak cerita sikit pasal web development security. Mungkin ramai antara kita yg tahu bahawa website yg ada HTTPS kat depan tu dah secure. Contohnya; https://www.k-ict.org. Tapi adakah HTTPS tu sahaja sudah cukup? Jawapannya adalah ‘Tak’. Sebabnya kita kena ambik kira jugak benda-benda lain yg terlibat macam plugin yg dipakai, database connection, FTP, email, dan sebagainya. Dalam skop web development, kita kena ambik kira hampir semua benda sampingan tu untuk nak pastikan environment adalah secure bila kat production server nanti. Bawah ni aku senaraikan beberapa kesilapan yg pernah aku jumpa;

Minggu ni aku nak cerita sikit pasal web development security. Mungkin ramai antara kita yg faham bahawa website yg ada HTTPS kat depan tu dah secure. Contohnya; https://www.k-ict.org. Tapi adakah HTTPS tu sahaja sudah cukup? Jawapannya adalah ‘Tak’. Sebabnya kita kena ambik kira jugak benda-benda lain yg terlibat macam plugin yg dipakai, database connection, FTP, email, dan sebagainya. Dalam skop web development, kita kena ambik kira hampir semua benda sampingan tu untuk pastikan agar kita buat web dalam secure environment. Bawah ni aku senaraikan 3 kesilapan yg pernah aku jumpa;

1) Clear-text FTP.

Kebanyakan web developer hanya gunakan FTP biasa je untuk nak upload file ke server. Sepatutnya kita kena gunakan FTPS atau FTPES sebab protocol ni akan encryptkan data transmission sama macam HTTPS. Jangan pulak confuse ngan SFTP ye. Aku biasanya guna FTP Explicit TLS (port 21 sama macam FTP biasa). Aku tak guna Implicit TLS (port 990 dan port 989) sebab dah deprecated. Dalam Windows aku pakai WinSCP untuk transfer files. Dalam Linux pulak aku pakai FileZilla. Bawah ni aku screenshot cara nak connect FTP secara secure.

WinSCP – Pilih TLS / SSL Explicit encryption.
Pastikan WinSCP tunjukkan icon secure connection ni.
Bila click, WinSCP akan paparkan encryption information.
Kat FileZilla, ni option untuk connection encryption.
Bila dah logged in, FileZilla akan show secure connection icon.
Click icon tu, FileZilla akan show connection encryption details.

2) Unencrypted remote MySQL connection.

Kesilapan ni mungkin jarang berlaku sebab biasanya web dan database berada dalam server yg sama, sebab tu dalam PHP script kita letak host as localhost. Tapi sekiranya menggunakan database server berasingan, pastikan connect dengan TLS. Bawah ni aku screenshot cara nak pastikan sama ada kita gunakan secure MySQL connection ataupon tak.

phpMyAdmin SSL / TLS info : Bila dah logged in, click kat tab Variables, dan search ssl.
Kalau kat MySQL console, MariaDB akan show SSL ciphers macam ni.

3) Unencrypted POP3 / IMAP / SMTP user authentication.

Kesilapan ni biasanya berlaku lebih banyak masa nak setting user email account di smartphone. Developer mungkin akan tunjukkan cara nak cek email melalui smartphone menggunakan plain-text POP3 (port 110) atau IMAP (port 143). Ini adalah bahaya sebab username dan password daripada device tu akan dihantar ke email server tanpa sebarang encryption. Walau complex macam mana sekalipon password tetap tak secure sebab sniffer masih boleh curi data tu! Untuk sending out setting biasanya tak berlaku kesilapan ni sebab kebanyakan telco dah block SMTP port 25. So developer terpaksa gunakan port 465 atau 587. Mungkin kekeliruan timbul sama ada nak gunakan SSL / TLS ataupon STARTTLS.

Aku gunakan STARTTLS untuk IMAP4 incoming setting.

Untuk SMTP pon aku gunakan STARTTLS.

Secara teorinya bila kita gunakan encrypted connection, prosesnya adalah lebih lambat berbanding plain-text sebab semua data akan diencryptkan terlebih dahulu sebelum transmit ke server, dan decrypted semula bila dah sampai, kemudian server akan encryptkan sekali lagi sebelum respon ke client. Mungkin ada benarnya pepatah yg mengatakan ‘Biar lambat asalkan selamat’.

Setakat ni dulu untuk entry minggu ni sebab aku masih sibuk hahaha. Bagi yg ada no. phone aku, elakkan call sebab jarang sangat aku sempat jawab. Apa-apa hal WhatsApp atau Telegram je. Bagi yg takde no. phone, boleh subscribe ke blog aku ni menggunakan Facebook atau Google atau WordPress account. Terima kasih pada yg menjadi subscriber.