5 lỗ hổng bảo mật phổ biến phá hỏng dự án bạn Khi tạo dự án trang web hay ứng dụng web bạn phải tuân thủ số quy tắc để đảm bảo người dùng bảo vệ Để ngăn chặn công, bạn cần tập trung vào chất lượng code tạo giai đoạn lập trình, việc cấu hình hệ thống giai đoạn triển khai Dưới hàng hàng ngàn kịch công xảy lỗi người lập trình SQL Injection SQL Injection loại công tiếng Nó thường sử dụng để khai thác lỗ hổng trang web tảng PHP ASP Các công bao gồm việc tiêm mã độc vào truy vấn SQL ứng dụng bạn thông qua giá trị đầu vào ứng dụng Nếu thành công cho phép kẻ công thêm xóa nội dung sở liệu, lấy giá trị CSDL email, mật thông tin cá nhân người dùng trang web SQL Injection xảy trang web chấp nhận truy vấn không đáng tin cậy vào sở liệu tạo chúng cách tự động Giả sử biến đăng nhập (bao gồm tên mật khẩu) đưa trực tiếp đến câu truy vấn SQL thông qua phương thức POST Một đoạn code chịu trách nhiệm xử lý việc đăng nhập người dùng dễ dàng bị tổn thương: Nếu người dùng trang web gửi tới máy chủ giá trị admin– mục tên người dùng, truy vấn SQL thực sau Điều xảy ra? Kí tự — hiểu DBMS comment, kết dẫn đến việc hoàn thành thực thi thất bại phần truy vấn SQL, phần vốn dùng để kiểm soát mật Tin tặc khai thác để chiếm quyền quản trị dịch vụ Cách ngăn chặn kiểu công SQL Injection: Cách bảo vệ hiểu kiểu công lọc liệu mà người dùng cung cấp hàm: mysql_real_escape_string(), pg_escape_string()… Dữ liệu số phải chuyển đổi settype() or sprintf(), sau kiểm tra với s_numeric(), ctype_digit() nhằm định dạng liệu xác Stored XSS Trong kiểu công này, script viết tin tặc đưa vào sở liệu hệ thống bị ảnh hưởng Đối lập với kiểu công SQL Injection, mã độc không ảnh hưởng đến sở liệu mà ảnh hưởng tới người dùng hệ thống Ví dụ phần bình luận trang web Tin tặc khai thác tất người dùng mà người dùng không nghi ngờ trang web bị lây nhiễm mã độc javscript đánh cắp phiên đăng nhập người dùng Ví dụ: Cách ngăn chặn Stored XSS Để ngăn chặn Stored XSS cần lọc thích hợp cho liệu đầu vào Phương pháp tốt tạo whitelist kí tự phép sử dụng mục Nếu trang web dễ bị tổn thương trước Stored XSS tùy chọn httpOnly cho cookie gửi giúp bảo vệ tốt người dùng khỏi việc phiên người dùng Trong đa số trình duyệt ngăn chặn hành vi ăn cắp cookie JavaScript từ người dùng Bảng mã Unicode Sự phát triển hệ thống kí tự ASCII mã hóa dựa chữ tiếng Anh phổ biến toàn cầu Theo thời gian, giới bắt đầu sử dụng ngôn ngữ hệ thống bảng chữ khác Do byte dùng để lưu trữ kí tự tất ngôn ngữ, hệ thống mã hóa dành cho ngôn ngữ đa dạng mắt Đó chuẩn Unicode Trong hệ thống Unicode, kí tự lưu trữ lớn byte Bảng mã UTF-8 bảng mã tảng Unicode sử dụng rộng rãi nhất, cho phép tin tặc chèm vài kí tự ví dụ “ /” theo cách khác Bộ giải mã UTF-8 không kiểm tra tính hợp lệ kí tự đặc biệt “/” Ví dụ, để nói bảng mã, xem đường link giống viết hệ thống bảng mã khác nhau: Trong hệ thống mã hóa khác nhau, kí tự lưu trữ vị trí khác Do đó, lọc danh sách đen kí tự đầu vào yêu cầu sử dụng tất kí tự Cách phòng chống kiểu công chuyển đổi tất liệu thành định dạng thống Sau kiểm thử chúng hợp lệ hay không loại bỏ kí tự không mong muốn PHP Injection Ngôn ngữ lập trình có hàm cho phép thực thi mã bên Trong PHP require(), include(), eval(), and preg_replace với modifier /e xem nơi lưu trữ chuỗi kí tự PHP code Ví dụ, giả sử trang web có điều khiển đơn giản dựa tập tin biến gửi qua phương thức GET để đưa vào nội dung file có trước Như thấy tập tin gọi thông qua phương thức GET sử dụng thông qua hàm include() Đó lỗi nguy hiểm bị khai thác tin tặc nhiều cách khác Bất kì mã thực thi Ví dụ: Đường dẫn đến mã độc thông qua tham số hàm Kịch thực thi máy chủ tin tặc Các ngăn chặn PHP Injection Cấu hình máy chủ giúp ích bạn phòng tránh kiểu công Các tùy chọn allow_url_fopen chặn file truy cập từ bên máy chủ dành cho hàm file_get_contents, fopen, include, require Các bảo vệ tốt không cho phép liệu đầu vào từ người dùng vào hàm thực thi script Bộ lọc chuỗi kí tự đầu vào tạo whitelist file phép điều cần thiết Ngoài nhiều kiểu công tương tự tin tặc khai thác như: Local File Include, Php Object Injection… Account Lockout Minh họa tốt cho công câu chuyện người dùng trang web đấu giá lớn giới Người đưa giá cao cho sản phẩm 15 phút trước phiên đấu giá đóng cửa, người dùng khác bước vào đấu giá Trước đấu giá kết thúc, người dùng cố gắng chốt lại định cuối mình, ông bị đăng xuất khỏi dịch vụ nhận thông báo tài khoản ông bị khóa vòng 30 phút không đấu giá thêm Tại hệ thống lại xử lí vậy? Người dùng thứ hai thấy người dùng đăng nhập Hắn thực nhiều lần đăng nhập vào tài khoản người dùng thứ với mật sai Với mục đích ngăn chặn công brute-force , hệ thống khóa tài khoản người dùng sau vượt lần đăng nhập thất bại Tin tặc sử dụng Account Lockout khiến tài khoản người dùng truy cập Cách ngăn chặn Account Lockout: Thay khóa tài khoản người dùng sau vượt số lần đăng nhập thất bại, bạn nên xem xét việc yêu cầu người dùng gõ mã Captcha sau lần đăng nhập Điều bảo vệ trang web khỏi kiểu công brute-force mà không từ chối truy cập người dùng Một giải pháp khác chặn địa IP khoản thời gian định Nhưng tin tặc người dùng bị công có chung địa IP Nó khiến người dùng truy cập vào tài khoản Kiểm tra bảo mật Kiểm tra thủ công trang web bạn với lỗ hổng bảo mật điều cần thiết Để tiết kiệm thời gian bạn sử dụng số công cụ tìm kiếm lỗ hổng tự động Chúng nói phương pháp kiểm tra bảo mật: Black Box Testing Kiểm thử viên Black box thực thông tin hàm trang web không cần biết cấu trung bên ứng dụng Họ kiểm tra liệu đầu vào hợp lệ kết đầu có xác hay không Acunetix ví dụ phầm mềm Black Box Testing White Box Testing White Box Testing lại dựa theo quy tắc ngược lại Kiểm thử viên toàn quyền truy cập vào mã nguồn, lỗ hổng bảo mật phát thông qua việc kiểm tra code RATS ví dụ phần mềm White Box Testing tự động Grey Box Testing Đó kết hợp phương pháp nêu Kĩ thuật đòi hỏi tiếp cận toàn tài liệu tạo suốt trình phát triển ứng dụng không tiếp cận vào mã nguồn Theo phương pháp này, điều chỉnh mức độ kiểm tra biến cụ thể Black Box Testing Tổng kết Năm kiểu công lựa chọn không đề cập đến chuyên sâu, vài kịch nêu Chắc chắn có nhiều công đe dọa doanh nghiệp bạn Bất kể lập trình viên, quản lí dự án hay công ty khởi nghiệp cần nhận thức tầm quan trọng việc bảo vệ ứng dụng Không thực biện pháp bảo mật đầy đủ khiến bạn bị uy tín với khách hàng dịch vụ tốt ... dùng bị công có chung địa IP Nó khiến người dùng truy cập vào tài khoản Kiểm tra bảo mật Kiểm tra thủ công trang web bạn với lỗ hổng bảo mật điều cần thiết Để tiết kiệm thời gian bạn sử dụng số... bạn Bất kể lập trình viên, quản lí dự án hay công ty khởi nghiệp cần nhận thức tầm quan trọng việc bảo vệ ứng dụng Không thực biện pháp bảo mật đầy đủ khiến bạn bị uy tín với khách hàng dịch vụ... đầu có xác hay không Acunetix ví dụ phầm mềm Black Box Testing White Box Testing White Box Testing lại dựa theo quy tắc ngược lại Kiểm thử viên toàn quyền truy cập vào mã nguồn, lỗ hổng bảo mật