Tips เล็กๆ สำหรับ PHP Secure coding

วันนี้เรามี Tips เล็กๆ น้อยๆ สำหรับการพัฒนาภาษา PHP ให้มีความมั่นคงปลอดภัยมากยิ่งขึ้น (PHP Secure coding) แต่ก่อนอื่นเรามารู้จักภาษา PHP กันซักนิดนึงก่อนครับ

PHP_Logo
รูปภาพจาก en.wikipedia.org

ภาษา PHP ถูกใช้ในการพัฒนาเว็บอย่างแพร่หลาย มีเว็บไซต์มากมายที่ถูกพัฒนาด้วยภาษา PHP เช่น Facebook, Yahoo, Wikipedia เพราะเป็นภาษาที่เข้าใจได้ง่าย และหากขั้นตอนของการพัฒนามี error ขึ้น จะแจ้งให้คุณทราบเพื่อให้แก้ปัญหาได้โดยง่าย แต่ปัจจุบันนี้ ความมั่นคงปลอดภัยเป็นเรื่องที่ควรใส่ใจมากขึ้น เราจึงมี Tips เล็กๆน้อยๆ สำหรับการพัฒนาภาษา PHP ให้มีความมั่นคงปลอดภัยมากขึ้น เพื่อเป็นการลดความเสี่ยงของการถูกโจมตี

1. Use error_reporting(0);

เพื่อคุณพัฒนาเว็บไซต์บนเครื่องคอมพิวเตอร์ของคุณ โดยอาจจะใช้ XAMPP หรือ WAMP คุณต้องการที่จะเห็นการแจ้งข้อผิดพลาดต่างๆ เพราะมันเป็นสิ่งที่จะช่วยคุณในการแก้ปัญหา แต่หากคุณต้องการนำเว็บไซต์ที่พัฒนาไปใช้งานจริง คุณควรใช้ error_reposting(0); แทน error_reposting(E_ALL); เพื่อไม่ให้มีการแสดงข้อผิดพลาดอันเป็นข้อมูลสำคัญให้ผู้ประสงค์ร้ายใช้เป็นข้อมูลในการโจมตีได้

2. Using POST Method Instead Of GET Method

ถ้าคุณมีการพัฒนาเว็บไซต์มานานแล้ว คุณจะต้องรู้ความแตกต่างระหว่าง POST กับ GET โดย GET Method จะมีการแสดงข้อมูลต่างๆที่ URI ของเว็บไซต์ ซึ่งอาจมีข้อมูลที่เราควรปกปิดไว้ ดังนั้นหากต้องการส่งข้อมูลสำคัญควรใช้ POST Method จะดีกว่าครับ

3. Validate Input

คุณต้องมีการตรวจสอบข้อมูลที่ผู้ใช้ส่งเข้ามาในระบบ ยกตัวอย่างเช่น ชื่อผู้ใช้งานควรมีความยาวมากกว่า 6 ตัวอักษร และใช้ตัวอักษร a-z 0-9 ได้เท่านั้น, อีเมลล์ควรอยู่ในรูปแบบที่ถูกต้อง คุณสามารถใช้ฟังก์ชัน preg_match(); ในการตรวจสอบดังกล่าวข้างต้นได้

4. Check For XSS Attack In User Input

คุณควรเช็คว่าเว็บไซต์มีช่องโหว่ XSS หรือไม่ เนื่องด้วยเป็นช่องโหว่ที่อันตราย คุณสามารถเช็คได้ด้วยการใส่ข้อมูลลงในกล่องรับข้อมูลในเว็บไซต์ <script>alert(‘OMG. There is a possibility.’);</script> หากใส่ข้อมูลดังกล่าวนี้แล้วไม่มีอะไรเกิดขึ้นแปลว่าอาจไม่พบช่องโหว่นี้ แต่อย่างไรก็ตามผู้ประสงค์ร้ายอาจใส่ข้อมูลอื่นที่คล้ายกันเพื่อให้เกิดช่องโหว่นี้ได้ ดังนั้นในการพัฒนาเว็บไซต์ คุณอาจจะปิดไม่ให้ใส่ข้อมูลตัวอักษร < หรือ > หรืออาจใช้ ฟังก์ชัน preg_replace();

5. Protection against SQL Injection

SQL Injection เป็นช่องโหว่ที่ร้ายแรงมาก เนื่องจากเป็นช่องโหว่ที่ให้ผู้ประสงค์ร้ายสามารถเรียกดูข้อมูลในฐานข้อมูลประเภท DBMS ได้ คุณควรที่จะไม่ให้ใส่ข้อมูลตัวอักษร ‘ หรือ ” ตัวอย่าง (‘ or ‘1’=’1) แต่โชคดีที่เรามีฟังก์ชันใน ภาษา PHP คือ mysqli_real_escape_string โดยคุณสามารถใช้ได้ดังตัวอย่างนี้ mysqli_real_escape_string($_POST[‘email’]);

บทความนี้เป็น Tips เล็กน้อย สำหรับการพัฒนาเว็บไซต์ให้มีความมั่นคงปลอดภัยมากขึ้น ผู้ที่กำลังศึกษาหรือทำงานอยู่สามารถนำไปใช้ได้ครับ

facebooktwittergoogle_plusredditpinterestlinkedinmail

Linux / Unix: Find and Delete All Empty Directories & Files

Linux
รูปภาพจาก : http://smartdns.com/wp-content/uploads/2015/03/Linux.png

Method # 1: ค้นหาและลบด้วย find command บน Linux

ตัวอย่างด้านล่างเป็นการค้นหาและลบ directories ที่ว่างเปล่าโดยใช้ BSD or GNU find command:

ค้นหาและลบไฟล์ที่ว่างเปล่า:

ลบ directories ที่ว่างเปล่า

จากตัวอย่าง จะเป็นการลบ directories จาก ~/Downloads/

ลบไฟล์ที่ว่างเปล่า

จากตัวอย่าง จะเป็นการลบไฟล์ที่ว่างเปล่าใน ~/Downloads/

วิธีการนับไฟล์หรือ directories ที่ว่างเปล่า

OPTION

-empty : Only find empty files and make sure it is a regular file or a directory.

-type d : Only match directories.

-type f : Only match files.

-delete : Delete files. Always put -delete option at the end of find command as find command line is evaluated as an expression, so putting -delete first will make find try to delete everything below the starting points you specified.

Method # 2: ค้นหาและลบด้วย xargs and rm/rmdir command

ตัวอย่างด้านล่างเป็นการค้นหาและลบ directories ที่ว่างเปล่าโดยใช้ xargs command:

OR

ค้นหาและลบไฟล์ที่ว่างเปล่า:

OR

See man pages – find(1), rmdir(1), xargs(1)

ที่มา : cyberciti.biz

facebooktwittergoogle_plusredditpinterestlinkedinmail

ฟังก์ชันแฮช (Hash function)

Hash function entryption
ฟังก์ชันแฮช (Hash function) คือ วิธีการที่ทำให้ข้อมูลย่อลงแต่มีลักษณะจำเพาะของข้อมูลนั้น โดยอาจกระทำโดยการแบ่งข้อมูลออกเป็นส่วนๆ ผ่านวิธีการใดๆแล้วนำกลับมารวมกัน เรียกว่า ค่าแฮช (hash value)

คุณสมบัติของฟังก์ชันแฮช (Hash function)

  1. ข้อมูลแต่ละตัวเมื่อผ่านฟังก์ชันแฮชแล้วจะต้องมีค่าไม่เท่ากัน มีลักษณะที่จำเพาะแต่ล่ะข้อมูล
  2. หาค่าแฮชจากข้อมูลควรทำได้ง่ายและรวดเร็ว
  3. เมื่อข้อมูลผ่านฟังก์ชันแฮชแล้วไม่ควรทำย้อนกลับได้
  4. การบวนการแฮชควรมีการกระจายตัวสูง ข้อมูลใดๆที่ผ่านฟังก์ชันแฮชควรมีขนาดเท่ากัน แต่ไม่เหมือนกัน

ทำไมต้องมีฟังก์ชันแฮช?

  1. เพื่อใช้ตรวจสอบว่าข้อมูลมีการเปลี่ยนแปลงหรือไม่
  2. เพื่อใช้เก็บข้อมูลสำหรับเปรียบเทียบ โดยการเปรียบเทียบข้อมูลจะทำได้รวดเร็วขึ้น
  3. ทำให้เป็นภาษาที่มนุษย์อ่านไม่เข้าใจ
  4. หากข้อมูลที่จะใช้เปรียบเทียบมีขนาดใหญ่มาก จะช่วยย่อข้อมูลให้เล็กลงได้มาก แต่ขึ้นอยู่กับวิธีของฟังก์ชันแฮช

 

ชนิดของฟังก์ชันแฮช

  1. MD2 (128bits) คิดค้นโดย Ronald Rivests
  2. MD4 (128bits) คิดค้นโดย Ronald Rivests
  3. MD5 (128bits) คิดค้นโดย Ronald Rivests
  4. MD6 (0~512 bits) คิดค้นโดย Ronald Rivests Team
  5. SHA0 (160bits) คิดค้นโดย  National Security Agency : NSA
  6. SHA1 (160bits) คิดค้นโดย  National Security Agency : NSA
  7. SHA2 (SHA-224, SHA-256, SHA-384, SHA-512) คิดค้นโดย  National Security Agency : NSA
facebooktwittergoogle_plusredditpinterestlinkedinmail

NETHOGS – MONITOR PER PROCESS NETWORK BANDWIDTH USAGE IN REAL TIME

ลินุกซ์มีโปรแกรมสำหรับ Monitor Network มากมาย เช่น iftop, netstat แต่ถ้าคุณกำลังมองหาโปรแกรมที่แสดงสถิติตามเวลาจริง NetHogs อาจเป็นคำตอบสำหรับคุณ

การติดตั้ง NetHogs บน RHEL, CentOS และ Fedora

คุณต้องเปิด EPEL repository บนลินุกซ์ของคุณก่อน เพื่อใช้คำสั่ง yum ในการติดตั้ง nethogs

ตัวอย่างของผลลัพธ์

การติดตั้ง NetHogs บน Ubuntu, Linux Mint และ Debian

ตัวอย่างของผลลัพธ์

การใช้งาน NetHogs

คำสั่งบน Linux ฝั่ง red-hat

คำสั่งบน Ubuntu Linux ใช้ sudo เพื่อให้สามารถใช้สิทธิ์ root ได้

ตัวอย่างของผลลัพธ์

NetHogs
NetHogs
NetHogs
NetHogs

จากรูปจะเห็น send และ received ซึ่งแสดงทราฟฟิคที่ถูกใช้งานอยู่ต่อโปรเซส (process) ส่วนผลรวมของทราฟฟิคทั้งหมดจะอยู่บรรทัดล่าง

NetHogs Command Line Options

-d ใช้ตั้งเวลาในการ refresh ข้อมูล ตามด้วย ‘device name’ โดยค่าทั่วไปคือ eth0 ตัวอย่างด้านล่างคือ refresh ทุก 5 วินาที

การ monitor interface eth0 และ eth1

การใช้งาน Options อื่นๆ

NetHogs Interactive Controls

Following are some useful interactive controls (Keyboard Shortcuts) of nethogs program.

สำหรับ options อื่นๆของ nethogs นั้น สามารถดูโดยใช้คำสั่ง man nethogs หรือsudo man nethogs จาก Terminal

รายละเอียดอื่นๆของ NetHogs นั้นไปที่ Nethogs project

ที่มา : tecmint.com

facebooktwittergoogle_plusredditpinterestlinkedinmail

HOW TO CREATE SECURE COOKIES

Making your cookies and sessions secure is essential for any developer/programmer. Today at Codingsec we are going to go through what cookies are and how they relate to security. Within this article it will feature techniques such as limiting the cookie to certain domains, also paths within that domain. It will also demonstrate how to select what information to store, also protecting the cookie from cross site scripting exploits.

การทำ cookies และ sessions ให้ปลอดภัยนั้นมีความจำเป็นสำหรับ developer/programmer ทางเว็บ codingsec จะกล่าวเกี่ยวกับการจัดการ cookies อย่างไรให้ปลอดภัย โดยในหัวข้อนี้จะแสดงเทคนิคในการจำกัด cookies เพียงบาง domain รวมถึง paths ใน domain นั้น การเลือกเก็บข้อมูลควรทำอย่างไร และการป้องกันจากโจมตีแบบ xss

What are Cookies?

cookies คืออะไร

A cookie is a piece of information which is in the form of a small txt file which is stored on a web users hard drive/storage device. It is generated by a websites server, the information stored within the cookie itself is set by the server and the programming language. It is commonly made possible with the use of HTTP headers. When a developer/programmer has data that they require to last for more than one session they can use cookies to store that data on the client side. A cookie is often thought as a web users I.D. card of which tell the server when the user returns to the website.

cookie เป็นชิ้นส่วนของข้อมูลถูกเก็บอยู่ในรูปแบบของไฟล์ text บนเครื่องของลูกข่ายที่ใช้งานเว็บไซต์ เมื่อ Programmer ต้องการข้อมูลล่าสุดของผู้ใช้งานก็สามารถใช้ cookie ที่เก็บไว้เพื่อแสดงให้เห็นถึง users I.D. เมื่อผู้ใช้งานติดต่อกับเว็บไซต์อีกครั้ง

When the server wants to set a cookie it passes back a header named “Set-Cookie” with the key-value pair and also options.

เมื่อ server ต้องการตั้งค่า cookie มันจะเขียนที่ส่วนหัวของ HTTP “Set-Cookie” พร้อมกับ key-value และ options อื่นๆ

With imminent requests the client sends its own header to the server so it acknowledges the name and value of its stored cookies. The server will not continue to send back the cookies, it will only send them if there is an alteration.

You can view the headers for yourself utilising the LiveHeaders plugin for Firefox.

Issues

Of course there issues for instance, the data has complete control over the client. Therefore all cookie data must be authenticated, when doing so it is significant that you avoid the storage of sensitive data. It is also important to understand that HTTP does not encrypt the headers in any way. If the connection isn’t made using SSL then data could be easily compromised by hackers.

แน่นอนว่าตัวอย่างปัญหาคือ ข้อมูลสามารถถูกควบคุมได้จากฝั่งลูกข่ายโดนสมบูรณ์ ข้อมูลของ cookie ทั้งหมดจึงควรถูกยืนยันตัวตน ดังนั้นแล้วจึงมีความสำคัญที่จะหลบเลี่ยงการเก็บข้อมูลที่อ่อนไหว เพราะว่า HTTP นั้นไม่มีการเข้ารหัสลับในส่วนของ headers มันจึงถูกบุกรุกได้ง่ายโดย hackers

Session cookies value is a simple ID and they have distinctly similar vulnerabilities as other forms of cookies. The immense strength of session cookies happens on server side, which is when the ID is used to extract data stored on the server. This method is extremely beneficial over storing data within the cookie itself of which are:

  • Data can not be tampered with by the user.
  • Large amounts of data can be stored without having to send it out with each request.
  • Data that you don’t wish the user to have access to can also be stored.

Now let’s begin!

to limit it to compatibility with your application. This is vital within environments that offer support for diverse sites and applications. When restricting the cookie to applications that require them you limit the possibility of it being intercepted.

Below are the questions that you need to be asking yourself in order to make the process successful:

  • What parts of the website need to access the cookie?
  • Will the cookie require to function across sub domains?
  • Will the cookie require to continue if the user leaves SSL areas of the website?

Another option to limit the cookie is to restrict the access to it with the use of javascript. How and where to limit access of the cookie really depends on what sort of website or application you are running. For instance if your website or application is mainly e-commerce based then limiting the cookies to only SSL would be recommended. However if you are running a blog or news based website then normally you can be less strict on the cookie limitations.

Using PHP configure the cookie using the “setcookie” function:

setcookie( name, value, expire, path, domain, secure, httponly);

//Open

setcookie( ‘username’, ‘Bob’, 0, ‘/’, ‘.example’ , false, false);

//Locked down

setcookie( ‘username’, ‘Bob’, 0, ‘/forums’, ‘www.example.com’, isset($_SERVER[“HTTPS”]), true);

In order to change cookie values for the session cookie needs “session_set_cookie_params” function. This needs to be requested before the session is active.

session_set_cookie_params ($expire, $path, $domain, $secure, true);

//Open

session_set_cookie_params(0, ‘/’, ‘.example’, false, false);

//Locked Down

session_set_cookie_params(‘0, /forums’, ‘www.example.com’, isset($_SERVER[“HTTPS”]), true)e[“HTTPS”]), true);

conclusion

Cookies are the simple technique of identity tracking used on a large number of websites. It is extremely significant to keep them secure to prevent unauthorized access to important data.

When compiling cookies it is key to:

  • Limit how much sensitive information is stored within it.
  • Keep the subdomains and paths down to prevent interception of sensitive data.
  • Incorporate SSL so the cookie data is not sent as plain text.
  • Finally make the cookie only accesible by Http so it can not be compromised with javascript.

ที่มา : codingsec.net

facebooktwittergoogle_plusredditpinterestlinkedinmail

Cross site scripting URL redirection in google chrome with TinyURL

ฉันได้ทดสอบกับ Google Chrome version 41.0.2272.101 m

คุณสามารถทดสอบช่องโหว่ได้ที่ w3schools.com โดยการใส่ code ด้านล่างนี้ครับ

จะเห็นว่าแทนที่จะแสดงเป็นกรอบขึ้นมาอย่างเดียว แต่ผลลัพธ์จะเกิดการ redirect เว็บไซต์ไปยังเว็บไซต์อื่นครับ

เมื่อทดสอบด้วยการใช้ curl จะได้ดังรูปนี้

xss_tinyurl
xss_tinyurl

จะเห็นว่ามีการเรียก javascript windows.location ซึ่งใช้สำหรับ redirect เว็บไซต์ใน javascript

facebooktwittergoogle_plusredditpinterestlinkedinmail

GoLismero The Web Knife Open Source Security Tools

GoLismero The Web Knife Open Source Security Tools
GoLismero The Web Knife Open Source Security Tools

GoLismero เป็น Open Source สำหรับทดสอบความมั่นคงปลอดภัยในระบบสารสนเทศ คุณอาจรู้จักเครื่องมืออื่นๆแล้ว เช่น OpenVas, Wfuzz, SQLMap, DNS recon, robot analyzer

สิ่งที่น่าสนใจสำหรับ GoLismero คือ

  • มันเป็นของฟรี
  • สามารถใช้ได้ทั่ง Windows, Linux, *BSD และ OS X
  • ไม่ต้องติดตั้ง libray อื่นๆแล้ว เพราะ GoLismero พัฒนามาจากภาษา Python อย่างเดียวเท่านั้น
  • มี Performance ที่ดีกว่าเครื่องมืออื่นๆที่เขียนด้วย Python
  • ง่ายต่อการใช้งาน
  • สามารถพัฒนา Plugin ต่อได้
  • ผลลัพธ์ที่ได้จะเหมือนใช้เครื่องมือที่รู้จักกันดี เช่น sqlmap, xsset, openvas, dnsrecon, theharvester.
  • ใช้มาตรฐาน CWE, CVE และ OWASP
  • ออกแบบให้รองรับกับการทำ cluster (not available yet.)

Download

ที่มา : hackersonlineclub.com

facebooktwittergoogle_plusredditpinterestlinkedinmail

Just another System security & Develop