Trang Chủ

Các lỗ hổng thường gặp và cách thực hiện lập trình an toàn trong phát triển ứng dụng web (P1)

1. Kiểm soát truy vấn cơ sỡ dữ liệu để tránh lỗ hổng SQL Injection

– Nguy cơ: Khi truy vấn tới cơ sở dữ liệu, lập trình viên thường sử dụng cách cộng xâu Input từ người dùng, các câu truy vấn này có thể bị mắc lỗi SQL Injection hoặc HQL Injection (nếu sử dụng Hibernate). Bằng việc lợi dụng các lỗi này, kẻ tấn công có thể xem, sửa, xóa dữ liệu trong database, từ đó chiếm được tài khoản admin, lấy cắp thông tin người dùng ….

– Phòng chống:

Ví dụ 2: Một số trường hợp không thể ngăn chặn được lỗi SQL Injection qua lệnh “order by”. Do không sử dụng được hàm setParam thì có thể sử dụng phương pháp sau:

Có thể bạn quan tâm

67 công cụ hữu ích, thư viện và tài nguyên để tiết kiệm thời gian cho web developer

Từ MVC đến các Modern Web Framework

2. Xử lý dữ liệu đầu vào để tránh lỗ hổng XSS

– Nguy cơ: Kết quả server trả về cho người dùng chủ yếu dưới dạng HTML. Nội dung trả về thường bao gồm cả những giá trị mà người dùng nhập vào hệ thống có thể bị mắc lỗi XSS nếu không kiểm soát dữ liệu đầu vào. XSS (Cross-Site Scripting) là một kỹ thuật tấn công bằng cách chèn vào các website động (JSP, ASP, PHP …) những thẻ HTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho những người sử dụng khác. Trong đó, những đoạn mã nguy hiểm được chèn vào hầu hết được viết bằng Cross-Site Scrip như JavaScript, JScript, DHTML và cũng có thể là cả các thẻ HTML.

– Phòng chống:

Ví dụ 1: Trang JSP bên dưới hiển thị lên lời chào với tên người dùng được lấy từ client

Mình xin tạm dừng bài viết tại đây! Trong bài sau, mình sẽ nói tiếp với “Sử dụng token để tránh lỗ hổng CSRF” và “Kiểm soát file upload lên hệ thống.”

Viblo

Chia sẻ bài viết ngay