This is default featured slide 1 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 2 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 3 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 4 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

This is default featured slide 5 title

Go to Blogger edit html and find these sentences.Now replace these sentences with your own descriptions.This theme is Bloggerized by Lasantha Bandara - Premiumbloggertemplates.com.

29.12.11

Kiểm tra độ an toàn của các trang web

Kiểm tra độ an toàn của các trang web
Nếu là người thường xuyên dùng máy tính, có khi nào bạn bị lừa đảo? Cho dù bạn sử dụng máy Mac, Windows, Linux, iOS hay Android, đều có rất nhiều cơ hội cho ai đó gửi cho bạn một e-mail hoặc tin nhắn văn bản nhằm đánh cắp thông tin cá nhân của bạn. Dữ liệu cũng có nghĩa là tiền, và bạn đang có nguy cơ để mất chúng trên internet.



Khuyến cáo dành cho người dùng là hãy để trình duyệt của mình trở nên thông minh hơn. Nghĩa là bạn phải luôn luôn tăng cường gấp đôi việc kiểm tra URL của các trang web ngân hàng, mạng xã hội, web e-mail... trước khi đăng nhập. Hầu hết các trình duyệt như Firefox, Chrome và Internet Explorer ngày nay đều có sự thay đổi màu sắc ở phần bên trái của địa chỉ trên thanh address. Đây là dấu hiệu cho thấy trang web đã được chứng thực là hợp pháp, nó luôn là một ý tưởng tốt cho việc gõ vào các URL bằng tay và không bao giờ kèm theo trong các link từ một e-mail nào đó.

Ngoài ra, kiểm tra với HTTPS thay vì HTTP cũng là giải pháp an ninh tốt mặc dù HTTPS chưa phải là an toàn tuyệt đối.

Vậy đối với những liên kết video do bạn bè đưa lên Twitter thì làm thế nào? Có một số dịch vụ mà bạn có thể yên tâm sử dụng để xác minh các đường link này. Google Safe Browsing là một ví dụ điển hình cho việc này. Chỉ cần nhập địa chỉ URL: http://google.com/safebrowsing/diagnostic?site=tenwebsite, thay phần tenwebsite bằng tên hoặc IP trang web bạn muốn kiểm tra (ví dụ: http://google.com/safebrowsing/diagnostic?site=quantrimang.com.vn) ngay lập tức kết quả sẽ cho bạn biết trang web đó có lưu trữ phần mềm độc hại trong vòng 90 ngày qua hay không.



Một cách đơn giản khác là sử dụng dịch vụ hpHosts. Chỉ cần nhập tên trang web vào hộp tìm kiếm và ấn nút Search, cơ sở dữ liệu của hệ thống sẽ cho bạn biết nếu trang web kiểm tra đã được sử dụng để phát tán các phần mềm độc hại hoặc tấn công lừa đảo. HpHosts cung cấp cho bạn thông tin chi tiết hơn so với Google Safe Browsing.

Hai dịch vụ hoàn hảo khác là Norton Safe Web từ Symantec – cho biết sự an toàn của một trang web, liệt kê các mối đe dọa, phần mềm độc hại, virus, rủi ro bảo mật... và Unmasked Parasites – xác minh tính an toàn của cả trang web và cung cấp danh sách chi tiết các liên kết cùng độ an toàn của nó (safe).

Nhiều bộ bảo mật còn được đi kèm với trình duyệt thông qua các add-on để kiểm tra các link khi bạn ghé qua. Chúng hoạt động khá tốt ở chức năng quét kết quả tìm kiếm của bạn và thêm các biểu tượng để chỉ ra liên kết có được an toàn hay không. Bạn có thể tải về công cụ AVG LinkScanner dành cho hệ điều hành Windows hoặc máy Mac (miễn phí), với những thiết bị Android bạn có thể sử dụng hai tiện ích miễn phí là Mobilation Android app hoặc Lookout Mobile Security. Cả hai ứng dụng này đều có chức năng chặn các liên kết độc hại trên thiết bị chạy Android.

Đáng tiếc là với người dùng iPhone và iPad của Apple, mặc dù lừa đảo trên mạng xã hội đã được chứng minh là có thể xảy ra trên các thiết bị iOS không bị jailbroken, tuy nhiên Apple vẫn không cho phép các ứng dụng kiểm tra liên kết như vậy.


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN

Bảo mật ứng dụng Web (Secure Web Application)

Trong khoảng vài năm trở lại đây, số lượng các lỗ hổng bảo mật của các trình ứng dụng Web được công bố tăng lên một cách đáng kể. Những người làm bảo mật thường chỉ quan tâm đến độ bảo mật của mạng và hệ điều hành chứ ít quan tâm nhiều đến bảo mật của chính các ứng dụng chạy trên máy chủ web.
Thống kê gần đây của Netcraft cho thấy hơn 65% các cuộc tấn công được thực hiện qua cổng (port) 80 của TCP, cổng truyền thống của Web.

Xin giới thiệu với các bạn một tài liệu khá hay về bảo mật ứng dụng Web được trình bày tại Hội thảo bảo mật thông tin mạng máy tính do HVA tổ chức vào tháng 7/2003 - bài của UFO (Ng Minh Thắng) thành viên Cộng đồng An ninh mạng HVA. Hy vọng tài liệu này sẽ giúp mọi người hiểu về các vấn đề bảo mật cố hữu trong các trình ứng dụng Web và cách xây dựng các trình ứng dụng Web, dịch vụ Web bảo mật.

Tại sao lập trình viên lại viết chương trình kém bảo mật?
Nhiều lập trình viên không chủ ý viết những đoạn mã kém bảo mật, nhưng thực tế họ lại làm vậy. Có nhiều nguyên nhân dẫn đến việc này. Có một bài viết trên BugTraq đã tổng kết lại như sau:
 Không có chương trình học về bảo mật máy tính trong hầu hết các trường học. Ngay cả khi có chương trình học về bảo mật, chúng thường cũng không thảo luận về cách viết một chương trình có độ bảo mật cao mà thường chỉ tập chung vào một phần nào đó, ví dụ như mật mã hoá. Chúng không đề cập đến các vấn đề thực tế như tràn bộ đệm ( Buffer Overflow), kiểm tra dữ liệu đầu vào

 Các sách dạy lập trình không dạy về các kĩ thuật lập trình an toàn, bảo mật
 Hầu hết mọi người không sử dụng các phương pháp kiểm tra chính thống
 Lập trình viên là con người và con người thì thường là lười biếng. Vì thế các lập trình viên thường chọn các phương pháp tiếp cận dễ dàng thay vì các cách tiếp cận bảo mật
 Hầu hết các lập trình viên không phải là lập trình viên tốt
 Hầu hết các lập trình viên không phải là những người làm về bảo mật. Họ không suy nghĩ như một kẻ tấn công thường nghĩ
 Còn rất nhiều phần mềm cổ lỗ có nhiều lỗ hổng bảo mật. Sửa chữa những phần mềm này là một việc khó khăn
 Hầu hết khách hàng không quan tâm đến bảo mật
 Bảo mật đòi hỏi thêm thời gian phát triển
 Bảo mật đòi hỏi thêm thời gian kiểm thử
Cần bảo mật đến mức nào?
Khi nói về độ bảo mật của một chương trình Web, một câu hỏi thông minh sẽ là “Dự án này cần bảo mật đến mức nào”. Phần mềm thường được tạo ra để thỏa mãn các yêu cầu về tính năng trước, sau đó mới đến bảo mật. Tuy nhiên khoảng thời gian thiết kế và phát triển chương trình là lúc lý tưởng đê xác định yêu cầu về bảo mật và tích hợp nó vào chương trình. Phòng bệnh hơn chữa bệnh.
Vậy làm sao để biết được bảo mật đến mức nào là phù hợp. Cần nhấn mạnh vài điểm quan trọng sau đây:
Không thể loại bỏ hết rủi ro
Chỉ có thể hạn chế rủi ro
Đừng bỏ quá nhiều chi phí vào bảo mật với những website không đáng giá. Tránh tình trạng “Một tiền gà ba tiền thóc”

Không bao giờ có thể loại bỏ được hết rủi ro. Mục đích bảo mật cho một hệ thống là xác định được mức độ bảo mật cần thiết để trình ứng dụng có thể hoạt động tốt trong môi trường của nó.
Quan điểm thứ hai là luôn có nhiều cách để giảm thiểu độ rủi ro. Tài liệu này đề cập chủ yếu đến các biện pháp đối phó trên phương diện kĩ thuật như kiểm tra dữ liệu đầu vào, đầu ra.
Những nhà thiết kế cần phải hiểu rõ họ đang bảo mật cho cái gì. Việc xác định đâu là những phần tử thông tin trọng yếu cũng là một công việc quan trọng trong việc thiết kế trình ứng dụng Web. Người dùng luôn phải trả giá cho bảo mật, cả về tốc độ và chi phí.
Những nguyên tắc về bảo mật
Những nguyên lý chung về bảo mật dưới đây là rất hữu dụng khi thiết kế hệ thống
Kiểm tra đầu ra và đầu vào
Tất cả dữ liệu đầu vào và đầu ra phải được kiểm tra để chắc chắn rằng nó là hợp lệ. Một chiến lược hợp lý là chỉ chấp nhận những dữ liệu với những tính chất cho trước và hủy bỏ tất cả những dữ liệu khác.
Giữ cho hệ thống đơn giản
Khi cố gắng xây dựng một hệ thống bảo mật, nếu nó trở nên quá khó sử dụng đối với người dùng, nó sẽ không được sử dụng nữa. Thông thường cách bảo mật hiểu quả cũng là cách đơn giản nhất. Đừng bắt người dùng phải nhập mật mã đến 12 kí tự hay bắt người quản trị hệ thống phải thiết lập hàng núi những thiết lập bảo mật.
Độ bảo mật của hệ thống là độ bảo mật ở chỗ yếu nhất
Nhiều Website thường quảng cáo "Hệ thống này bảo mật 100%, nó dùng 128bit SSL". Dù cửa chính của bạn chắc đến đâu mà cửa sau lại để lỏng lẻo thì cũng chẳng có ý nghĩa gì. Những kẻ tấn công luôn tìm điểm yếu nhất và tấn công vào đó.
Quyền thấp nhất
Hệ thống phải được thiết kế theo cách mà nó được chạy với quyền hệ thống thấp nhất đủ để cho hệ thống hoạt động. Nếu ứng dụng không cần đến quyền root thì đừng bao giờ gán quyền đó cho nó.
Chứng thực người dùng
Chứng thực người dùng là gì ?
Trong một trình ứng dụng Web, rất dễ lẫn lộn giữa chứng thực người dùng và quản lí phiên làm việc. Chứng thực người dùng là quá trình xác định xem một người dùng hay một thực thể có đúng là người mà anh ta/cô ta tuyên bố là hay không ?

Người dùng thường được chứng thực bằng username và password. Sau khi được chứng thực, một dấu hiệu của phiên làm việc thường được đặt vào trình duyệt của người dùng (được lưu trong cookie). Điều này cho phép trình duyệt gửi dấu hiệu phiên làm việc mỗi khi một yêu cầu được thực hiện, cho phép chứng thực thực thể đó với server. Người dùng thông thường chỉ cần chứng thực một lần trong mỗi phiên làm việc, nhưng việc chứng thực thực thể thì xảy ra trong mỗi yêu cầu (request).
HTTP Basic Authentication
Có nhiều cách để chứng thực người dùng. Cách đơn giản nhất là dùng HTTP Basic Authentication. Khi được yêu cầu được thực hiện với một URI, máy chủ Web trả lời trình duyệt mã 401.
HTTP/1.1 401 Authorization Required
Điều này bảo trình duyệt phải cung cấp một username và password. Trình duyệt yêu cầu người dùng nhập username và password, thường ở trong một hộp thoại. Trình duyệt nối username và password lại, ngăn nhau bởi dấu hai chấm và sau đó mã hóa base 64 xâu này. Yêu cầu thứ hai sẽ được yêu cầu với cùng địa chỉ URI này trong đó xâu username và password đã mã hóa sẽ được gửi kèm trong header.
Một vấn đề trong cách chứng thực này là không có cách nào để bắt trình duyệt “logout”.
Username và password sẽ được truyền trên mạng mà không được bảo vệ trừ phi SSL hoặc TLS được sử dụng.
Chứng thực dựa trên form
Thay vì chứng thực người dùng ở mức giao thức, các trình ứng dụng Web có thể sử dụng mã của chính bản thân mình. Người lập trình có thể yêu cầu người dùng chứng thực thông qua một HTML FORM.
Tất nhiên phương thức chứng thực thông qua HTML FORM cần phải có những biện pháp bảo vệ trước những cách tấn công cổ điển dựa trên giao thức được mô tả ở đây và phải có cách mã hóa hợp lý các mật mã được lưu trong cơ sở dữ liệu.
Chú ý: Các form khi được gửi đi dưới dạng POST hoặc GET sẽ gửi username và password dưới dạng text, trừ phi SSL được sử dụng.
Các vấn đề cơ bản của việc chứng thực
Lưu trữ Username và Password
Trong các hệ thống thông tin mà việc chứng thực được dựa trên Password, hệ thống phải có cách lưu trữ Usernames và Passwords một cách hợp lý. Passwords phải được lưu trữ sao cho trình ứng dụng có thể tính và so sánh mật mã trong cơ sở dữ liệu với mật mã do người dùng cung cấp, nhưng password trong CSDL không thể đọc được bởi nhà quản trị hay kẻ tấn công. Các thuật toán mã hóa một chiều (hash) như MD5 có thể đảm đương tốt vai trò này.
Đảm bảo chất lượng của password
Một mật mã tốt là mật mã không thể đoán được. Một mật mã như vậy nên có ít nhất 8 kí tự và có cả kí tự chữ và số.

Khóa account
Một cách đoán mật mã thường gặp là thử một số lượng lớn các mật mã khác nhau. Hệ thống nên khóa account sau một số lần đăng nhập không thành công nhất định. Con số thích hợp có thể là năm.
Có một trở ngại trong kĩ thuật này. Kẻ tấn công có thể thử một số lượng lớn các mật mã trên một danh sách người dùng đã biết trước, điều này có thể dẫn tới việc khóa toàn bộ danh sách người dùng. Vì thế việc khóa account chỉ nên khóa trong một thời gian ngắn, ví dụ là 15 phút. Thời gian này cũng đủ để cho việc đoán password phải cần một thời gian dài không thể chấp nhận được, trong khi cho phép mở account với những người dùng hợp lệ.
Thay đổi mật mã theo định kì
Việc bắt người dùng thay đổi mật mã sau một khoảng thời gian nhất định là một cách tốt để tránh việc bị lộ mật mã.
Quản lí phiên làm việc của người dùng
HTTP là một giao thức phi trạng thái, có nghĩa là server trả lời từng yêu cầu đơn lẻ của client mà không liên kết chúng với nhau. Cần phải sử dụng một kĩ thuật quản lí trạng thái để cho phép các yêu cầu của người dùng được gắn với một “phiên làm việc”. Việc có thể gắn các hành động của người dùng với một phiên làm việc cụ thể là rất quan trọng với bảo mật một chương trình Web. Việc quản lí phiên làm việc kém có thể dẫn đến việc các tài khoản của người dùng bị đánh cắp, trong nhiều trường hợp kẻ tấn công còn có thể có quyền quản trị hệ thống.
Các mô hình quản lí phiên làm việc
Session Time-Out
Phiên làm việc không bao giờ hết hạn sẽ cho phép kẻ tấn công có thời gian vô hạn để đoán hoặc brute force (thử toàn bộ) một phiên làm việc hợp lệ đã được chứng thực. Một ví dụ cụ thể là tùy chọn “Remember Me” có trong rất nhiều Website. Nếu cookie của một người dùng bị đánh cắp hoặc brute-force, kẻ tấn công có thể dùng phiên làm việc tĩnh này để truy nhập vào account của người dùng đó. Thêm vào đó, các dấu hiệu của phiên làm việc có thể được cache trên proxy servers, và nếu server đó bị đột nhập thì những thông tin như vậy có thể bị anh ta lợi dụng nếu phiên làm việc đó chưa hết hạn.
Phát hiện phiên làm việc giả mạo/tấn công Brute-Force
Nhiều Website sử dụng các phương pháp để ngăn chặn việc đoán mật khẩu ( ví dụ nó có thể tạm thời khóa account đó hoặc ban địa chỉ IP dùng để tấn công). Một kẻ tấn công có thể thử hàng trăm hoặc hàng nghìn lần các dấu hiệu phiên làm việc khác nhau được gắn trong URL hoặc cookie. Biện pháp ngăn chặn là tạm thời ban địa chỉ IP hoặc khóa account đó lại. Cũng nên cài đặt thêm các module phát hiện để phát hiện xem một người dùng đã được chứng thực nào đó đang cố gắng thực hiện việc leo thang đặc quyền.
Chứng thực lại phiên làm việc
Những hoạt động quan trọng của người dùng như chuyển tiền nên yêu cầu người dùng chứng thực lại trước khi thực hiện hành động đó. Phương pháp này khá hiệu quả để chống lại các phương pháp tấn công kiểu như Cross Site Scripting.
Truyền dấu hiệu của phiên làm việc
Khi các dấu hiệu của phiên làm việc (e.g cookies) được truyền đi trên mạng, các dấu hiệu này có thể bị đánh cắp. Hệ thống nên sử dụng các biện pháp mã hóa để ngăn chặn chuyện này. SSL và TLS là các biện pháp hữu hiệu để bảo vệ các dấu hiệu của phiên làm việc.
Log sự kiện
Log là rất quan trọng trong việc cung cấp những thông tin bảo mật về một chương trình Web và các phần mềm liên quan. Lưu lại thông tin về các cuộc truy nhập là rất quan trọng vì những nguyên nhân sau đây:
 Logs thường là nơi duy nhất lưu giữ lại những hành vi truy nhập đáng ngờ
 Logs có thể cung cấp những thông tin cụ thể về hoạt động của một người dùng
 Logs rất hữu dụng để biết chuyện gì đã xảy ra sau khi có trục trặc, dù có liên quan đến bảo mật hay không. Thậm chí việc này còn giúp nhà quản trị biết được kẻ đột nhập đã làm những gì và qua đó có các biện pháp khắc phục thích hợp
 Logs trong một số trường hợp còn dùng để làm bằng chứng. Trong trường hợp này thì khỏi phải nói logs quan trọng đến như thế nào
Log những thành phần nào?
Khi log lại thông tin, nên lưu lại các thông tin gỡ rối cần thiết như thời gian xảy ra sự kiện, người thực hiện và mô tả chi tiết về sự kiện đó. Những sự kiện sau đây nên được logs lại trong trình ứng dụng:
 Đọc dữ liệu
 Ghi dữ liệu
 Sửa những đặc tính dữ liệu quan trọng như là quyền truy nhập, quyền sở hữu thông tin
 Xóa dữ liệu
 Các sự kiện chứng thực người dùng (đăng nhập, đăng xuất,…).
 Các hoạt động quản trị Website (quản lí người dùng, xem thông tin người dùng,…).

Quản lí logs
Cần phải có cách quản lí hiệu quả logs để khả năng log của Web server và trình ứng dụng không bị bỏ phí. Việc lưu trữ, quản lí thông tin logs kém hiệu quả sẽ khiến cho những thông tin này có thể bị xâm hại và trở nên vô dụng cho việc phân tích bảo mật sau này.
Những file logs nên có thuộc tính sao cho chỉ có thể ghi thông tin mới mà không thể xóa thông tin cũ đi. Các logs files cũng nên được backup thường xuyên.
Kiểm tra dữ liệu
Hầu hết những kiểu tấn công thường gặp ( sẽ được mô tả trong phần sau) có thể được ngăn chặn hoặc giảm bớt đáng kể bằng cách kiểm tra đầu vào một cách hợp lý. Việc kiểm tra dữ liệu là một yếu tố quan trọng nhất trong việc thiết kế một ứng dụng bảo mật. Nói đến kiểm tra dữ liệu tức là kiểm tra cả dữ liệu đầu vào và dữ liệu đầu ra.
Các chiến lược kiểm tra
Các chiến lược kiểm tra đầu vào chịu ảnh hưởng lớn của kiến trúc chương trình. Có 3 mô hình để lựa chọn khi thiết kế một chiến lược kiểm tra dữ liệu:
Chỉ chấp nhận những dữ liệu đã biết chắc là hợp lệ
Loại bỏ những dữ liệu biết chắc là không hợp lệ
Chỉnh sửa những dữ liệu có hại
Cần phải nhấn mạnh rằng chiến lược đầu tiên là chiến lược hiệu quả nhất. Tuy nhiên không phải lúc nào cũng thực hiện được điều này vì những lí do tài chính cũng như kĩ thuật.
Cả ba phương thức đều phải kiểm tra:
Kiểu dữ liệu
Cú pháp
Độ dài
Lưu ý: Không bao giờ được dựa vào sự kiểm tra dữ liệu đầu vào ở client-side.
Mọi sự kiểm tra ở client-side đều có thể bị vượt qua. Mọi sự kiểm tra dữ liệu đều phải được thực hiện bên phía server. Việc kiểm tra dữ liệu bên phía client-side, với mục đích làm cho chương trình thân thiện hơn, là có thể chấp nhận được nhưng không thể coi là một quá trình kiểm tra thực sự. Mọi sự kiểm tra phải được thực hiện bên phía server, ngay cả khi phải lặp lại các thao tác kiểm tra đã thực hiện bên phía client-side.
(Ng Minh Thắng – UFO - HVA Member)



Source Bảo mật ứng dụng Web (Secure Web Application)


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN

Khám phá tính năng của file .htaccess

Khám phá tính năng của file .htaccess
Chắc hẳn nhiều người quản lý website thường bắt gặp file có tên .htaccess. Để giúp các bạn hiểu rõ hơn về chức năng của file này, tôi xin mạo muội phân tích, đánh giá và đưa ra kinh nghiệm của mình trong bài viết dưới đây.
Mỗi khi vào NET, bạn sẽ mặc nhiên tải các files được thể hiện trên trình duyệt. Quản lý việc xác định và thể hiện các files này chính là web-server. Hiện nay có 2 loại server thông dụng hơn cả: IIS và Apache.



Cũng như bất kỳ một phần mềm nào khác, web-server có những cấu hình nhất định. Song bạn, một người thuê host, rất có thể không có quyền thay đổi cấu hình này thông qua những files chính yếu, có tác dụng với tất cả các sites nằm trên server. Điều đó không có nghĩa là bạn phải phụ thuộc hoàn toàn vào cấu hình mặc định của máy chủ. Apache cho phép bạn thay đổi một số tùy chọn, và tùy chọn này sẽ có hiệu lực chỉ với site của bạn. Để làm việc này, ta cần dùng đến file .htaccess.

Đây là file hiệu chỉnh rất uyển chuyển của server Apache. Thông qua nó, bạn có thể thay đổi nhiều tùy chọn được xác định trong file httpd.conf (File httpd.com là file cấu hình chính của Apache và có hiệu lực trên toàn server).
Bạn không thể đọc được nội dung file .htaccess thông qua trình duyệt web. Nếu file này nằm ở thư mục gốc, những thay đổi được nó xác định có hiệu lực với toàn bộ site (ngoại trừ những thư mục có chứa file .htaccess khác và tất cả các các thư mục con nằm trong thư mục này).

Dưới đây là một vài nguyên tắc bắt buộc phải tuân thủ khi thay đổi nội dung file .htaccess:
- Đường dẫn phải được xuất phát từ thư mục gốc của máy chủ. Ví dụ: /d/home/www.mysite.com/htdocs/config/.htpasswords;
- Domain phải được viết cùng với http://www. Ví dụ: Redirect / http://www.site.com;
- Tên file phải chính xác là “dấu chấm” htaccess, được định dạng UNIX. (Bạn nên dùng phần mềm UltraEdit 32 để thay đổi và lưu file này).

Còn dưới đây là một số mẫu nội dung của file .htaccess. Rất có thể nó sẽ có ích cho các bạn.
Để bảo vệ khu vực admin, chúng ta sẽ tạo 1 file .htaccess với nội dung sau:

AuthName "Administration Zone"
AuthType Basic
AuthUserFile /d/home/www.mysite.com/htdocs/files/.htpasswd
require valid-user

Sau đó upload nó vào thư mục admin. Hãy chú ý đến dòng ghi đường dẫn đến file .htpasswd: nó được ghi từ thư mục gốc của server. File .htpasswd có thể để ở bất kỳ vị trí nào trên host của bạn, nhưng tốt nhất để ngoài thư mục gốc của site.
Bước tiếp theo, chúng ta sẽ tạo file .htpasswd – nơi lưu giữ login và password để đăng nhập vào khu vực admin.

Nếu bạn truy cập vào khu vực admin của mình bằng một địa chỉ IP nhất định, hãy tạo file .htaccess kiểm tra số IP này. Nếu đúng với IP bạn khai báo, hệ thống mới cho phép bạn vào khu vực quản lý site. Nội dung của file .htaccess trong trường hợp này sẽ là:

order allow deny
deny from all
allow from 192.168.0.199

Số IP trên chỉ là ví dụ. Bạn cần thay vào đó IP của mình.

Để bảo vệ việc truy cập trực tiếp đến file php nào đó, bạn có thể để trong thư mục chứa file này một file .htaccess với nội dung sau:

deny from all

Trên đây chỉ là một vài ví dụ. Các bạn có thể áp dụng nó cho site của mình.
Chúc thành công.


Source Khám phá tính năng của file .htaccess: ThongTinBaoMat.Com,Theo Nukevn.com


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN

Nội dung Bảo mật với PHP & Mysql Phần 2

Nội dung Bảo mật với PHP & Mysql Phần 2
Như ta thường biết , để đưa bất cứ dữ liệu từ người sử dụng vào CSDL ta đều thông qua dạng truyền biến form HTML , gồm nhiều dạng và nhiều cách khác nhau .

Như ta thường biết , để đưa bất cứ dữ liệu từ người sử dụng vào CSDL ta đều thông qua dạng truyền biến form HTML , gồm nhiều dạng và nhiều cách khác nhau .

Vì thế lỗi cũng rất nhiều nếu ta không kịp ngăn chặn , có thể dẫn đến những hậu quả khó lường.
Dù truyền biến dạng POST , GET thì lỗi vẫn có . Và lỗi nghiêm trọng là dùng các biến ẩn để so sánh hoặc thực thi một mệnh đề logic nào đó .

Ví dụ bạn làm 1 biến ẩn như password , email ... thì kẻ tấn công có thể view source của bạn , thay đổi các trường và thay đổi luôn action . Vì thế nếu lỗi thì kẻ tấn công có thể tấn công trực tiếp từ những lỗi này với vài thủ thuật nêu trên .

Cách khắc phục : Không đặt những biến ẩn với mục đích so sánh hay thực thi mệnh đề logic .
Nếu bạn lập trình đưa trực tiếp các biến vào thẳng CSDL mà không thông qua một bước kiểm tra nào đó thì nguy hiểm .

Các nguy hiểm có thể xảy ra :
- Cross site scripting
- SQL injection
- Buffer overflow in Mysql

Vì vậy bước kiểm tra các biến vào hết sức quan trọng .

Cách khắc phục :

- Cross site scripting : Để khắc phục lỗi này , bạn nên xử lý biến vào theo kiểu chặn các tag HTML các hàm PHP hổ trợ làm việc đó : str_replace , strip_tags , htmlspecialchars , htmlentities ... ( tham khảo thêm về các hàm sử lý chuỗi ) để xử lý các tag như < > chuyển sang mã HTML hay thêm ký tự nào vào , .... , thay thế các text như onmouseover , onload ...
- SQL injection : các biến đưa vào thường nguy hiểm nếu ``dính`` dấu ` , ```` hoặc # , vì thế cách khắc phục cũng như trên hoặc thêm hàm addslashes .
- Buffer overflow in Mysql : cái này thường nghiêm trọng , khi bạn đưa biến vào CSDL mà không chống flood thì kẻ tấn công cò thể fresh trình duyệt web hoặc dùng những script tấn côngf từ server , host hay localhost khác , làm tràn server . Khiến tắt nghẽn ... và server có thể cắt host bạn như chơi .

Cách khắc phục , so sánh biến nhập vào trùng hay thơi gian ... nói chung có nhiều cách để làm việc này , hiệu quả và nhanh thì dùng hàm header sau khi submit . ( Nếu bạn lập trình dùng hàm mysql_fetch_array , cũng dễ bị tràn server , lý do gôm dữ liệu vào mảng nếu nhiều record thì thế nào ... vì thế bạn có thể chuyển qua dùng mysql_result , nó lấy dữ liệu theo filed và column )

Lưu ý về dạng upload file : cái này cũng quan trọng không kém , vì thế bạn phải kiểm tra dạng file gì khi được upload vì không sẽ có thể làm host của bạn dính backdoor .


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN

Nội dung Bảo mật với PHP & Mysql Phần 1

Nội dung Bảo mật với PHP & Mysql Phần 1
PHP , một ngôn ngữ lập trình mã nguồn mở , đáp ứng cho sự phát triển web và sử dụng song song với mã HTML. Ngôn ngữ lập trình PHP cách thức viết gẫn gũi với C và PERL , tuy nhiên PHP viết dễ dàng và không cầu kỳ như C hoặc PERL với cách đặt biến dễ chịu.

1) Giới thiệu sơ lược

+ PHP , một ngôn ngữ lập trình mã nguồn mở , đáp ứng cho sự phát triển web và sử dụng song song với mã HTML. Ngôn ngữ lập trình PHP cách thức viết gẫn gũi với C và PERL , tuy nhiên PHP viết dễ dàng và không cầu kỳ như C hoặc PERL với cách đặt biến dễ chịu.
PHP có thể chạy trên nhiều hệ điều hành như Linux , Unix , Windows , MAC OSX , OpenBSD... , nhưng phổ biến rộng rãi hiện nay là Linux . Tích hợp với các dạng server như Apache , IIS . Và PHP hổ trợ được nhiều loại cơ sở dữ liệu như : Mysql, Oracle (OCI7 and OCI8) MySQL , ODBC ... và những loại khác . Hiện nay Mysql thì phổ biến nhất .
+ Mysql ( ``My Ess Que Ell`` ) ,cũng giống PHP một chỗ là phần mềm mã nguồn mở . Mysql load dữ liệu nhanh và dễ sử dụng .
PHP và Mysql có thể được coi như là một giải pháp tối ưu để phát triển Cơ sỡ dử liệu trên Internet hiện nay với sự tiện dụng và hiệu quả của nó , thích hợp cho các cá nhân , tổ chức , doanh nghiệp thực hiện Thương Mại điện tử . PHP và MYsql có thể download miễn phí tại 2 địa chỉ www.php.net và www.mysql.com

2) Những lỗi cơ bản thường gặp với PHP mà Mysql

+ Dạng truyền biến .

Khi lập trình ta thường thấy nhiều lỗi do cách thức truyền biến ra IE hoặc Netcape do form . Khi submit một form nào đó , các biến trong form có thể truy xuất ra , và được sử dụng như là biến toàn cục ( global ) , $_POST , $_GET , $_VAR ... .NGoài cách đưa biến từ form còn có session và cookies .
Mỗi con đường truyền biến bao giờ cũng có cái lợi và các hại của nó . Ở đây xin đề cập đến vấn đề tác hại của nó.

Khi một lập trình viên , Lập trình với PHP nếu không cẩn thận sử dụng biến có thể dẫn đến nhiều sự nguy hiểm khác nhau .

Các thức truyền biến được xem là nguy hiểm nhất là dạng truyền biến trên bar address của các chương trình duyệt web . Khi đó kẻ tấn công có thể lợi dụng những sơ hở này để khai thác và nguy hiểm là SQL injection .
Ví dụ . Khi bạn sử dụng các biến trực tiếp trên address bar để dùng cho các mệnh đề logic , thì thường dễ bị vượt qua .
Code ví dụ :
if ($hello) echo ``hello``;
Code trên cho thấy nếu tồn tạn biến hello rồi sẽ thực thi . Vậy vấn đề chỉ cần cho nó tồn tại . Vì thế ta nên kiểm tra biến với một giá trị nào đó , xác định thì lỗi có thể được thông qua ( nhưng nếu source của bạn đã được tham khảo thì điều này coi như vô nghĩa - Sẽ được nói sau tại mục PHP exploit local ) .
Submit form với hình thức GET , thì các biến trong form sẽ được truyền trực tiếp lên address bar và nếu sử dụng biến toàn cục đó liên quan đến Uncode thì ... hiệu quả sẽ giảm đi . Chẳng hạn bạn tạo một form như sau :

< input name=``key`` type=text >
< input type=submit value=``Test`` >
< /form >

Xin được nói sơ về SQL injection với cách truyền biến này .
Ví dụ :
$a = mysql_query(``SELECT * FROM user $osd``);

Nếu $osd trên address lộ ra như vậy : ORDER by id DESC Thì ta có thể thay thế biến osd với một giá trị khác là code PHP chẳng hạn . Vậy là chẳng khác nào tạo điều kiện cho kẻ tấn công thực hiện những hành động chết người . Ví dụ :
$osd=``); mysql_query(``INSERT INTO user .....``);

KHi bạn nhập ttext với dạng unicode thì khi truyền trên address bar các ký tự sẽ không còn chính xác nữa . Vậy làm cách nào khắc phục .
Vâng ! Có khá nhiều cách , bạn có thể cookies , session hay hidden biến đó.

Về vấn đề đặt biến dạng hidden trong form HTML . Lợi thì có lợi nhưng hại vẫn có .
Ví dụ :
Nếu bạn đặt một biến hidden nào đó dùng để check hoặc cho một mệnh đề logic thực thi thì khả năng bảo mật sẽ không còn , chỉ cần view source trong CT duyệt web là lộ nguyên si . Và khi kẻ tấn công có thể tạo ra các biến đó thì ... việc check mệnh đề coi như vô nghĩa .

Và khi cho phép nhận thông tin từ các input để đưa vào CSDL rồi chuyển tải ra website , nếu không lọc những thẻ HTML cho phép thực thi JAVAscript cũng nguy hiểm khôn lường : Tận dụng để nhúng ccác loại sâu bọ , Các đoạn mã chôm thông tin ( cross site Scripting )

Sử dụng biến từ Cookies .
Cookies rất hiệu quả để chứa những thông tin , nhưng lạm dụng nó quá có thể dẫn đến nguy hiểm . Nếu một lập trình viên set cookies các thông tin về một tài khoản nào đó thì ... chỉ cần xem cookies là xong . Cách khắc phục là mã hóa nó hết .
Thứ 2 . Ví dụ một cookies sau đây:
userid=11
passhash=``helloall``

Vấn đề ở đây là về việc chứa thông tin không cần thiết là password của tài khoản. Dù mã hóa hay không mã hóa vẫn nguy hiểm . Nếu mã hóa dạng thông thường như dạng base64 , crypt ... vẫn dịch ngược được và dạng MD5 thì vẫn có thể Brute Force .
Vậy cookies những gì cần thiết không nên chứa những thông tin mang tính bảo mật .
Đó là những lỗi cơ bản , vỉ thời gian có hạn , nên chỉ nêu một vài lỗi như thế .

3) Safe mode PHP and Mysql local exploit ( LOCAL EXPLOIT)

Đây là một lỗi bảo mật nguy hiểm nhất . Nói nôm na là kỹ thuật khai thác thông tin từ host chung server .
Ví dụ khi bạn có host ở server ABC và kẻ tấn công cũng có host chung server và chung ổ đĩa với bạn thì hết sức nguy hiểm .
Kẻ tấn công có thể làm mọi việc thì theo độ bảo mật của server đó . cụ thể như : xem source ( tìm lỗi bảo mật của lập trình ) ,xem thông tin tài khoảng host của bạn ( username , password , email ) , chiếm server , by pass server ......

Xin được nói sơ về lỗi này .

Chỉ cần 1 vài backdoor trên server là nguy hiểm không lường . Khi cơ sỡ dữ liệu của bạn dùng Mysql để lộ password , user của database thì việc sinh sát CDSL đó hoàn toàn có thể thực thi ( DROP , QUERY , INSERT ... ) , và đặc biệt nguy hiểm đối với các server dùng Cpanel để quản lý hosting cho mỗi tài khoản . Một số Cpanel tạo db có info trùng với tài khoải login và Cpanel , FTP , Webmail , POP3 ... , và chỉ một vài thủ thật nhỏ của kẻ tấn công thì website của bạn có thể thuộc quyền kiểm soát của hắn với đầy đủ quyền hạn .

Nếu PHP chạy trên Linux thì việc soi server tìm thông tin chỉ là việc đơn giản nhưng cũng tuỳ theo độ bảo mật của server đó. Tình hình hiện nay một số Công ty VN hosting sử dụng PHP mà Mysql trên Linux cũng rất nhiều và việc bảo mật còn khá sơ sài . Vì vậy phát triển thương mại điện tử muốn an toàn trước hết phải bảo mật cơ sỡ dữ liệu một cách an toàn .
Ngoài cách trên , còn có lỗi bảo mật của Web server : Apache , mức độ tận dụng cũng rất cao với lôĩ này : Apache chunked Vul .

Nguyên nhân xảy ra lỗi này :

- Safe mode : được mở
- Các thư mục chưa được set quyền .
- Chưa setting cho php.ini kỹ .
- PHP cho phép set php.ini bất kỳ .
- Mysql cho phép truy xuất vào cơ sỡ dữ liệu với host chung : localhost


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN

Nội dung Bảo mật với PHP và Mysql phần 03

Nội dung Bảo mật với PHP và Mysql phần 03
Hai phần trước chúng ta như cưỡi ngựa xem … hoa . Giờ vấn đề nhức nhối hiện nay về việc bảo mật với PHP và Mysql là … flood .



Dạng flood có 2 loại dạng Flood Form và Flood Process

- Flood form là gì ? Flood form là dạng gởi dữ liệu hàng loạt khiến cho MYSQL xử lý “chới với” , ví dụ bạn thiết kế một form đơn giản chỉ INSERT data vào mysql . Nếu Dữ liệu chỉ là một request thì không sao , còn trong 1 giây mà có cả trăm request thì lập tức … hihì

Hiện tại khá nhiều web site thiết kế form không có mã xác nhận ? thì vấn đề gì sẽ xảy ra ?

Nếu những form như góp ý , đăng ký thành viên : lâu lâu có cả ngàn record do flood là chuyện thường , nếu form xử lý có gởi mail thì … đương nhiên bị lợi dụng để làm Bomb mail , làm đầy CSDL của mình .

Những hậu quả dẫn đến : MYSQL bị treo , server chết , bị đầy space , tốn bandwidth . Chẳng hạn 1 record chừng 30kbytes thì 1000 , hay 10000 cứ như vậy lặp đi lặp lại theo cấp số nhân thì space tốn khá nhiều cho những dữ liệu vô ích , và cpu sẽ load rất nhiều tốn tài nguyên .

- Flood process là gì ? Là dạng flood không tạo ra dữ liệu mới mà nó gởi những request khiến PHP và Mysql xử lý khá vất vả . Hiện đang có “trào lưu” flood PHP mà MYSQL bằng X-flash ( Macro Media Flash ) . Minh chứng là các bạn thấy trang http://www.hvaonline.net và http://www.hvanews.net hứng chịu một ngày trên cả trăm đợt tấn công , nhưng tại sao vẫn đứng hiên ngang , là do chế độ bảo mật cao , nếu đối với các site thường là … có vẻ bị “ngủm” .

Cách phòng chống .

- Đối với form nhập liệu cần tạo ra mã xác nhận dạng Hình ảnh ( có thể xem phần đăng ký thành viên tại PHPeasy , Hvanews … và một số những forum khác .
- Cấu hình Mysql chấp nhận nhiều kết nối hơn ( mặc định MYSQL thường là 100)
- Thiết lập hệ thống Firewall lọc những header chứa X-Flash
- Chuyển website sang SSL .
Còn nhiều cách khác , ở đây mình chỉ đưa ra những “nghiên cứu” mang tính chủ quan và sưu tầm từ kinh nghiệm của “cha ông ta” .


NHÀ CUNG CẤP DỊCH VỤ CHUYÊN NGHIỆP
PHÁT TRIỂN
WEBDESIGN - HOSTING - DOMAIN