2010-08-30 42 views
9

Tôi đang tìm thư viện java có thể cung cấp sự bảo vệ chống lại XSS attacks. Tôi đang viết một máy chủ và muốn xác thực tính năng nhập của người dùng của tôi không chứa javascript độc hại.Thư viện java Anti-XSS

Bạn sẽ giới thiệu thư viện nào?

+0

thể trùng lặp của [Làm thế nào để "Purify" HTML để ngăn chặn các cuộc tấn công XSS trong Java hoặc JSP?] (http://stackoverflow.com/questions/3587199/how-to-purify-html-code-to-prevent-xss-attacks-in-java-or-jsp) và [Best regex để bắt XSS (Cross-site Scripting) tấn công (trong Java)?] (http://stackoverflow.com/questions/24723/best-regex-to-catch-xss-cross-site-scripting-attack-in-java) – BalusC

+0

@BalusC - true. – ripper234

Trả lời

6

Bạn nên sử dụng AntiSamy. (That's what I did)

+0

Tôi nghĩ AntiSamy không cung cấp chức năng phát hiện nếu XSS được thực hiện. Bạn có thể đề xuất một thư viện có thể giúp phát hiện giống nhau không? – Siddharth

+1

XSS không thể thực sự được phát hiện cho đến khi được thực thi thành công trong ngữ cảnh trình duyệt. Tuy nhiên, antisamy không tạo ra một danh sách lỗi để bạn có thể thấy lý do tại sao một DOM cụ thể bị từ chối. Tuy nhiên, ở giai đoạn này, chống độc quyền đã không được xúc động kể từ năm 2013, vì vậy nó có lẽ không nên được sử dụng anyway. – avgvstvs

1

Nếu bạn muốn chấp nhận HTML từ người dùng, thì AntiSamy hoặc thứ gì đó như jsoup có ý nghĩa. Tuy nhiên, nếu bạn chỉ muốn một bộ tốt của nạn, bạn có thể sử dụng một thư viện như CSL

Chúng tôi có một tờ trực tuyến cheat cho thấy làm thế nào để sử dụng nó trong nhiều ngữ cảnh HTML (aka HTML constructs):

+0

Không sử dụng Jsoup vì mục đích xác thực bảo mật. Thiết kế của Jsoup là "sửa chữa" HTML không hợp lệ và nhiều cuộc tấn công XSS cố tình không hợp lệ ... vì vậy Jsoup "sửa" và xác thực của bạn có thể gắn cờ nó là tốt. – avgvstvs

2

vĩ đại đăng cách ngăn chặn các cuộc tấn công XSS trong các tình huống khác nhau được đăng trong ngăn xếp sau đây: Avoid XSS and allow some html tags with JavaScript

+0

Tôi sẽ tránh xa việc sử dụng javascript để làm điều này - hầu hết các cuộc tấn công những ngày này là dựa trên DOM, và javascript có một kỹ thuật gọi là monkeypatching có thể cho phép kẻ tấn công kiểm soát mọi chức năng phía máy khách. – avgvstvs

+0

@avgvstvs nếu kẻ tấn công đã giành được quyền truy cập vào khả năng vá khỉ, sau đó về cơ bản anh ta đã có thể làm bất cứ điều gì anh ta có thể thực hiện thông qua XSS. –

+0

@MatthijsWessels quan điểm của tôi là nhà phát triển web, giao diện người dùng chỉ đơn giản là * sai * để triển khai * bất kỳ loại XSS nào, vì máy chủ không kiểm soát được những gì xảy ra trong trình duyệt. Trình duyệt không tin cậy, mọi lúc. – avgvstvs

0

Tôi đã sử dụng dự án vệ sinh HTML OWASP với nhiều thành công.

https://www.owasp.org/index.php/OWASP_Java_HTML_Sanitizer_Project

Chính sách có thể được định nghĩa (hay chính sách được xác định trước có thể được sử dụng) cho phép bạn kiểm soát những loại phần tử HTML được phép trên String được xác nhận/vệ sinh. Một người nghe có thể được sử dụng như HTML được khử trùng để xác định những yếu tố nào đang bị từ chối, giúp bạn linh hoạt xung quanh cách truyền đạt lại cho khách hàng. Ngoài việc triển khai dễ dàng, tôi cũng thích thư viện này vì nó được sản xuất và duy trì bởi OWASP, một tổ chức lâu đời có mục tiêu là bảo mật web.