6 lỗi bảo mật developer thường xuyên gặp phải Sau đây sẽ là 6 lỗi bảo mật developer thường xuyên gặp phải được sắp xếp mức độ nguy hiểm giảm dần theo ý kiến cá nhân. Các bạn hãy cùng theo dõi nhé! 1. SQL Injection Không phải nói nhiều về cái lỗi thần thánh này, gần như Dev mới 96.69% đều mắc phải nó, thậm chí các Dev có kinh nghiệm cũng có thể mắc. Lấy ví dụ phần login cho một website. Lỗi xảy ra như thế nào? Câu query bạn mong muốn sẽ là: $sql = "select * from users where username='".$_POST['username']."' and password='".$_POST['password']."'"; // Còn gì tuyệt vời hơn nếu người dùng nhập, ví dụ username là quydo, mật khẩu là matkhauManhVL. Nhưng vấn đề là nhiều thanh niên không thích thế, ví dụ nhập username là quydo' or 1-- và mật khẩu là nhập linh tinh là kadslfjladsjfkldsfjladskfjaskldfjadsklf Khi đó query mà bạn đang chờ sẽ là: $sql = "select * from users where username='quydo' or 1 limit 1– – and password='kadslfjladsjfkldsfjladskfjaskldfjadsklf' Câu query luôn đúng bởi – – là dùng để kết thúc 1 câu query, như // trong php đó. Sự nguy hiểm User chạy ở đây là user connect tới database server (không phải user của web server). - Thứ nhất là có thể truy xuất gần như là toàn bộ thông tin về cơ sở dữ liệu đang thao thác và có thể các database (do grant quyền). - Thứ hai là có thể query insert, update, drop đến database hiện tại. VD có thanh niên chạy drop database database_name thì thôi xong (cái này phụ thuộc nhiều yếu tố mới thành công) - Thứ ba là có thể upload backdoor (cụ thể là php shell), phải phụ thuộc khá nhiều điều kiện. User chạy là root (hoặc user có quyền với file), biết được cấu trúc website đang chạy (ví dụ biết được /var/www/domain.com), cái này mà được thì rất nguy hiểm. Thường thì các attacker sẽ tìm phần login admin => login vào admin backend, dựa vào các bug (chủ yếu là upload) để upload backdoor (php shell) lên. 2. XSS Lấy ví dụ phần search cho một website. Lỗi xảy ra như thế nào? Giả sử url trang search là: http://domain.com/search.php?keyword=user_keyword Và trong trang search.php, ở trang search.php bạn có dòng: echo "Kết quả tìm kiếm cho từ khóa: ".$_GET['keyword']; - Nếu người dùng nhập keyword bình thường, ví dụ: xem phim xxx thì ổn. - Nhưng nếu người dùng thích nhập khác, ví dụ: aloxo xss Thì lúc load trang search.php?keyword= 1 cái alert bằng javascript sẽ xuất hiện với nội dung "aloxo xss" Sự nguy hiểm Bạn tham khảo tại link sau: https://kipalog.com/posts/Lo-hong-bao-mat-Cross-Site-Scripting–XSS–co-gi-nguy-hiem Thường thì các form input hay bị như thông tin tài khoản, phần bình luận comment. 3. Upload Lỗi xảy ra như thế nào? Dev không check kiểu file, hoặc chỉ check ở máy client. Ví dụ: check kiểu file = javascript trước khi gửi lên là không ổn, có thể chỉnh sửa js nên bypass được. Code check không chính xác, có thể bypass được, ví dụ dùng cái này là gặp sự cố ngay: if($FILES['file_field']['type'] == 'jpg') echo "tiếp tục"; Không thay đổi tên, lấy tên theo tên client gửi lên. Người dùng có thể cho tên file là shell.php.jpg, backdoor.php.rar… Có 1 bug mà rất nguy hiểm, dựa vào hàm moveuploaded_file để upload php backdoor lên. Link sau đây: http://www.paulosyibelo.com/2015/03/exploiting-php-upload-forms-with-cve.html 4. Insecure Direct Object References Cái này cũng khá hay gặp, nhất là ở phần API - Ví dụ ở app, sẽ có 1 API /user/transaction/Trans_id để lấy info giao dịch của người dùng user gọi api, api get thông tin giao dịch có id=Trans_id để trả lại cho user. - Lỗi ở đây là Dev không kiểm tra Trans_id có thuộc về user đó không? Nên có thể thay Trans_id khác, mà API vẫn trả về. 5. Remote Code Execution Để chạy được cái này cần khá nhiều điều kiện, bạn có thể search Google để biết thêm chi tiết. 6. Remote file inclusion Lỗi này khá hiếm khi xảy ra, nếu mà đã xảy ra thì lại khá nguy hiểm, khi file include là backdoor shell. Các lỗi mà bạn không hiểu thì có thể Google để tìm hiểu thêm. 4 lỗi đầu là nguy hiểm nhất nên mình có ví dụ cơ bản. ================ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: - 024. 6275 2212 Website: https://stanford.com.vn ================ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: - 024. 6275 2212 Website: https://stanford.com.vn/ ================ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: - 024. 6275 2212 Website: https://stanford.com.vn/ ================ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ Hotline: - 024. 6275 2212 Website: https://stanford.com.vn/ Tags: học lập trình web, khóa học lập trình web, bảo mật web