XSS là gì? Hướng dẫn ngăn ngừa, lọc và vá lỗ hổng XSS

ITNavi 09 Dec 2020 5810
Chắc hẳn, không ít lập trình viên nghĩ rằng Cross-Site Scripting nên không hề gây hại đến nguy hiểm. Một số Developer còn nghĩ XSS sẽ rất đơn giản chỉ như là sử dụng Javascript để có thể tạo ra một hộp thoại thông báo mới. Vì lý do này mà rất nhiều Web-master chủ quan trong việc lọc các dữ liệu đầu ra và đầu vào. Để bạn đọc có cái nhìn tổng quan hơn về vấn đề này, sau đây ITNavi sẽ chia sẻ đến bạn XSS là gì và mức độ nguy hiểm của XSS.  

Định nghĩa XSS là gì?

XSS có tên đầy đủ là Cross Site Scripting: nó là một trong những cuộc tấn công vô cùng phổ biến. Chúng thường rất dễ bị tấn công nên hầu hết các lập trình viên có kinh nghiệm đều sẽ biết về nó. XSS được xem là một trong những cuộc tấn công có mức độ nguy hiểm cao với những ứng dụng web và chúng có thể mang lại hậu quả vô cùng nghiêm trọng.  Định nghĩa XSS là gì?

Định nghĩa XSS là gì?

ITNavi sẽ giới thiệu cơ bản về tấn công XSS như sau: tấn công XSS là một trong những đoạn mã độc được sử dụng để có thể khai thác dễ dàng hơn các lỗ hổng XSS. Vì vậy, hacker sẽ chèn dễ hơn các mã độc thông qua những đoạn script để thực thi chúng ở phía Client. Thông thường, những cuộc tấn công này đều được sử dụng với mục đích vượt qua các truy cập và giả mạo người sử dụng. Cuộc tấn công này có mục đích là: ăn cắp các dữ liệu nhận dạng người dùng như: cookies, session tokens và một số thông tin khác. Ở hầu hết các trường hợp thì những cuộc tấn công này đã và đang được sử dụng để ăn cắp được cookie của người khác. Như bạn đã biết, cookie có khả năng giúp chúng ta đăng nhập tự động. Do vậy, khi cookie bị đánh cắp ta có thể đăng nhập bằng một số thông tin dạng khác. Đây chính là một trong những lý do trọng tâm, tại sao các cuộc tấn công XSS được xem là cuộc tấn công nguy hiểm nhất.  Hiện tại, tấn công XSS đã và đang được thực hiện ở ngay phía client; nên nó có khả năng thực hiện được với những ngôn ngữ lập trình phía client khác nhau.  Tuy vậy, những cuộc tấn công thường xuyên nhất đa số được thực hiện với  Javascript và HTML.

Cuộc tấn công XSS sẽ được thực hiện ra sao?

Sau khi hiểu rõ XSS là gì thì sau đây ITNavi sẽ chia sẻ các thực hiện của một cuộc tấn công XSS. Cuộc tấn công Cross Site Scripting nghĩa và việc gửi tiền và chèn các lệnh rồi script độc hại. Đây là những mã độc được viết dưới dạng ngôn ngữ lập trình tương tự như: Javascript, HTML, VBScript, Flash… XSS gây hại rất nhiều cho Developer

XSS gây hại rất nhiều cho Developer

Tuy nhiên, cách tấn công này thường chỉ dùng Javascript và HTML là chủ yếu. Những bước tấn công này thường được thực hiện bằng nhiều cách khác nhau và còn phụ thuộc nhiều vào loại tấn công XSS nữa.  Các mã độc sẽ được phản chiếu trên trình duyệt của một số nạn nhân hoặc được lưu trữ tại các cơ sở dữ liệu. Ngoài ra, nó còn được chạy mỗi khi người sử dụng được gọi với các chức năng thích hợp nhất. Nguyên nhân chính gây ra những cuộc tấn công này là cần phải xác thực đầu vào của dữ liệu người dùng không phù hợp. Từ đó  dữ liệu độc hại từ đầu đều có thể xâm nhập vào các dữ liệu đầu ra. Các mã độc sẽ nhập vào một script và được chèn vào những mã nguồn của một số website khác. Chính lúc đó, trình duyệt lại không thể biết được loại mã thực thi này có động hại hay là không.  Do vậy, các loại mã độc hại này có khả năng đang thực thi trên trình duyệt của bất kỳ nạn nhân dưới mọi hình thức nào để có thể hiển thị được cho người sử dụng.   Dưới đây là một số hình thức tấn công của Cross Site Scripting có thể xảy ra:
  • Cross Site Scripting có thể sẽ xảy ra tại các tập lệnh độc hại được thực hiện ở phía client. 
  • Các trang web hay các form giả mạo đều sẽ được hiển thị cho người sử dụng (tại đây nạn nhân có thể thu thập được các thông tin đăng nhập  hoặc nhấp vào các liên kết độc hại).
  • Ở trên trang web sẽ xuất hiện các quảng được hiển thị khác.
  SXX có thể gây ra nhiều điều độc hại nhất định cho website

SXX có thể gây ra nhiều điều độc hại nhất định cho website

  • Email độc hại khi được gửi đến nạn nhân thì tấn công sẽ xảy ra hoặc khi tin tặc tìm kiếm các lỗ hổng xuất hiện trên website và gửi nó đến làm đầu vào độc hại.  Khi đó, trên các tập lệnh độc hại đều sẽ được tiêm vào các mã lệnh rồi gửi chúng dưới dạng đầu ra cho các người dùng cuối cùng. 
Bạn đọc tham khảo thêm: SharePoint online là gì? Các tính năng vượt trội của SharePoint

Cách ngăn ngừa, lọc và vá lỗ hổng XSS là gì?

Nằm trong các dạng tấn công được đánh giá là nguy hiểm và có độ rủi ro cao. Chính vì vậy, bạn cần chuẩn bị một số kế hoạch để ngăn ngừa tình trạng này để ngăn chặn tuyệt đối các cuộc tấn công từ XSS.  Một số phương pháp phòng ngừa được các chuyên gia đánh giá cao và phổ biến bao gồm:
  • Data validation
  • Filtering
  • Escaping
Một trong những bước đi đầu tiên của công tác phòng ngừa để chống hiện tượng bị tấn công này là xác thực đầu vào. Mọi thứ đều sẽ được nhập bởi các người dùng và chúng cần được xác thực một cách chuẩn xác nhất. Bởi vì như sau: đầu vào của người dùng có khả năng sẽ tìm đường dẫn đến các đầu ta khác. Khi các dữ liệu được xác thực có thể được đặt tên với mục đích làm cơ sở cho nhu cầu đảm bảo tính bảo mật cho hệ thống.  Tuy nhiên, bạn cần lưu ý rằng ý tưởng xác thực này thường không cho phép các đầu vào không phù hợp. Chính vì vậy, nó chỉ có khả năng hỗ trợ giảm thiểu được các rủi mà không đủ khả năng để ngăn chặn được các lỗ hổng XSS có thể xảy ra.  Phương pháp thứ 2 mà bạn không nên bỏ qua để ngăn chặn vấn đề này chính là thực hiện lọc đầu vào của người sử dụng. Ý tưởng này sẽ thực hiện bằng cách tìm kiếm những từ khóa nguy hiểm khác nằm trong hạng mục của người sử dụng rồi thực hiện xóa chúng đi hoặc thay thế bằng các chuỗi trống khác. Một số từ khóa bạn có thể lưu ý đó là: 
  • Các thẻ <script> </ script>
  • Các lệnh Javascript
  • Các đánh dấu HTML
Thực hiện lọc đầu vào thường rất dễ thực hành, nó có thể được thực hiện bằng vô số cách khác nhau. Ví dụ như: 
  • Lọc bởi các developers đã từng viết mã phía server.
  • Các thư viện của ngôn ngữ lập trình thường thích hợp hơn khi đang sử dụng. 
Developer cần chú trọng lọc, ngăn ngừa lỗ hổng XSS

Developer cần chú trọng lọc, ngăn ngừa lỗ hổng XSS

Trong những trường hợp này thì đã có một số Developer viết được mã riêng của họ để có thể tìm kiếm được những từ khóa thích hợp nhất rồi xóa chúng đi. Tuy nhiên, một trong những phương pháp hữu dụng mà bạn sử dụng là chọn thư viện lập trình phù hợp nhất để có thể lọc đầu ra cho người sử dụng. Bạn cũng nên lưu ý rằng việc sử dụng thư viện sẽ đáng tin cậy hơn; bởi vì thư viện đã được rất nhiều nhà phát triển thử nghiệm và sử dụng chúng thường xuyên.  Ngoài ra, một phương pháp khác có thể giúp bạn phòng ngừa được các vấn đề có thể xảy ra khác đó chính là ký tự Escape. Hiện tại, ký tự được xem là thích hợp có thể giúp lập trình viên thay đổi dễ dàng hơn các đoạn mã đặc biệt.  Ngoài ra, để đảm bảo an toàn khỏi các lỗi hống từ bảo mật XSS trước thế giới internet. Bạn nên chú trọng kiểm tra, lọc các dữ liệu đầu vào. Ngoài ra, ứng dụng của bạn không được thực hiện export hết dữ liệu ra giống với các dữ liệu đầu vào. Nếu trực tiếp đi tới trình duyệt thì người dùng có thể không kiểm tra và loại bỏ được các đoạn mã độc hại khác.  Như các bạn đã thấy lỗi XSS nguy hiểm như thế nào, chính vì vậy khi phát triển một website thì không nên chủ quan cũng như coi thường các lỗ hổng từ XSS.  Ngoài ra, lập trình viên cũng luôn cần cẩn trọng trong quá trình xử lý dữ liệu đầu vào của người sử dụng như: đăng ký, đăng nhập, tìm hiểu thông tin,... Khi lọc dữ liệu, các dữ liệu bắt buộc phải được lưu vào cơ sở sở dữ liệu hoặc khi được in ra trên website. 

Kết luận

Chắc rằng, với những thông tin mà chúng tôi chia sẻ ở phía trên thì bạn đọc đã hiểu rõ được xss là gì? Từ đó, có phương pháp phòng ngừa để vá các lỗ hổng một canh nhanh chóng và dễ dàng hơn. 
ITNavi - Nền tảng kết nối việc làm IT

Nguồn: XSS là gì? Hướng dẫn ngăn ngừa, lọc và vá lỗ hổng XSS

Bài viết liên quan

NEWSLETTER

Nhập địa chỉ email của bạn dưới đây để đăng ký nhận tin mới nhất

KẾT NỐI VÀ THEO DÕI