2012-04-23 34 views
9

Sáng nay tôi tỉnh dậy một cảnh báo JavaScript về một dự án của tôi chạy KnockoutJS, jQuery và Underscore.js. Nó nói "Tôi có thể chạy bất kỳ JavaScript nào mà tôi chọn trên trình duyệt của người dùng". JavaScript của bên thứ ba duy nhất mà tôi đang tải xuống là Typekit và việc xóa nội dung đó không làm cho điều này biến mất. Tôi đã tìm kiếm JavaScript và JavaScript của nhà cung cấp và chuỗi này không sao lưu khớp với bất kỳ thứ gì.Tôi nhận được cảnh báo JavaScript trong dự án mà tôi không tạo, đe dọa tôi?

Bạn sẽ khắc phục sự cố này như thế nào và/hoặc có phải điều gì đó được biết là xảy ra không?

+11

Nó được tiêm không trong JS của bạn nhưng trong DB của bạn :) Bạn đã không khử trùng dữ liệu đầu vào của người dùng – fl00r

+1

Bạn có nhập bất kỳ quảng cáo hoặc một cái gì đó như thế không? Có lẽ không thể nói mà không thực sự nhìn vào trang web. – Pointy

+7

Đếm cho mình may mắn họ đã tốt đẹp về nó, có thể đã được nhiều tồi tệ hơn –

Trả lời

14

Nếu bạn có cơ sở dữ liệu cho ứng dụng của mình, đó sẽ là địa điểm tiếp theo để kiểm tra. Tôi đoán ai đó tìm thấy và khai thác một lỗ hổng tiêm (hoặc đầu vào HTML không được khử trùng hoặc SQL) và tiêm tập lệnh vào một trang thông qua cơ sở dữ liệu.

Địa điểm cuối cùng là xem mã ruby ​​để xem liệu có phải người dùng độc hại đã sửa đổi nguồn của bạn hay không.

+4

Nó thậm chí có thể không được tiêm sql, chỉ cần tiêm html không an toàn. – JayC

+1

@JayC - Đang trong quá trình chỉnh sửa nó khi bạn nhận xét. Vì lý do nào đó, tôi không thể tìm ra những gì để gọi vector đó. –

+0

ah ok, thanks guys –

0

Có vẻ như một nỗ lực hack trên trang web của bạn. Kiểm tra bất kỳ cơ sở dữ liệu, tệp văn bản, v.v ... đang được sử dụng để nhận dữ liệu nhập của người dùng. Có vẻ như bạn không kiểm tra nội dung đang được đăng lên máy chủ của mình, tôi đoán vậy.

3

Bạn rõ ràng nhận dữ liệu đầu vào từ người dùng và sau đó xuất nó trở lại như một phần của HTML mà không trích dẫn hoặc vệ sinh. Có hai kiểm tra nhanh để thực hiện:

1) Nguồn mở trang kết xuất cảnh báo này và tìm kiếm bên trong nguồn để có văn bản cảnh báo chính xác - điều này sẽ cho bạn biết rõ ràng trường nào do người dùng điền bị xâm nhập. 2) Để chắc chắn, hãy tìm kiếm tất cả các trường khác trong cơ sở dữ liệu của bạn do người dùng tạo (tên đăng nhập, văn bản nhận xét, v.v.) cho các từ "script" và "alert".

Trong tương lai: luôn vệ sinh đầu vào của bạn (xóa thẻ HTML) trước khi chèn vào trang HTML HOẶC thoát ký hiệu dưới dạng đối tượng theo tiêu chuẩn HOẶC xử lý rõ ràng là văn bản thuần túy bằng cách gán giá trị cho nút văn bản trong DOM.

Các vấn đề liên quan