2011-01-05 36 views
13

Điều gì đó ít nhất có thể quét một loạt tệp .js tìm kiếm các câu lệnh eval và các mã có vấn đề khác. Có lẽ chỉ là một mô hình regex sẽ làm điều đó, nhưng tôi muốn tìm một công cụ tinh vi hơn (và thường xuyên duy trì).Công cụ tốt nhất để kiểm tra bảo mật Javascript là gì?

+0

Tại sao bạn không thử qua http://security.stackexchange.com/? – AviD

+1

Hiện tại có SE bảo mật? Chúa ơi, làm thế nào là một trong những mong đợi để theo kịp với điều này. – Anders

Trả lời

1

Bạn đã thử Douglas Crockford's JSLint chưa? Mặc dù nó không quét mã của bạn cho các vấn đề bảo mật, tuy nhiên, nó cảnh báo bạn về các câu lệnh "eval". OTOH, Predrag Tomasevic đã viết một JavaScript Verifier based on JSLint có thể được tích hợp với Visual Studio (đọc thêm về điều này here).

1

Tôi không biết bất kỳ công cụ Nguồn mở nào tiến hành phân tích tĩnh JavaScript.

Tham lam cho eval() có thể sẽ không giúp ích gì ngoài những lỗi rất đơn giản, rất rõ ràng. Sẽ khó phân tích hơn nếu kịch bản đã được rút gọn hoặc làm xáo trộn vì bạn sẽ bị ép cứng để xác định xem đối số đó có đang được sử dụng một cách an toàn hay không.

Có rất nhiều sự cố bảo mật trong JavaScript dựa trên tương tác với DOM. Tham chiếu cho eval() có thể hoạt động, nhưng nó sẽ bỏ lỡ các điểm thực thi khác như href hoặc trình xử lý sự kiện có thể bị tấn công, ví dụ: href = javascript: xss hoặc onFoo = xss. Bạn thực sự cần một công cụ giao dịch với JavaScript và DOM, không chỉ là một bảng điều khiển JavaScript.

IBM/Watchfire gần đây đã phát hành một bài báo về một số JavaScript analyzer mà họ đã tạo. Bài báo cung cấp chi tiết về kết quả thay vì thực hiện. Một công cụ thương mại có thể không phải là cách bạn muốn đi, nhưng bài báo sẽ giúp làm sáng tỏ những thách thức của việc làm tốt này.

+0

+1 cho bài báo của IBM, đánh dấu điều đó! – Anders