Sắp xếp. Trên bề mặt, đó không phải là rủi ro trực tiếp, bởi vì bạn không phải là chạy mã, chỉ cần biên dịch. Tuy nhiên, không có gì nói rằng trình biên dịch C# không chứa một số loại lỗi nào đó, do đầu vào độc hại đúng, sẽ làm cho nó được giải cứu và bắt đầu thực thi các lệnh trực tiếp.
Tuy nhiên, nếu sau này bạn thực thi mã được biên dịch (và có lẽ bạn làm - nếu không thì tại sao bạn sẽ biên dịch mã đó để bắt đầu?), Nó sẽ chạy cùng ngữ cảnh như bạn. Rõ ràng, có tất cả các loại tác động bảo mật khó chịu, giống như sử dụng tính năng tương tự như eval()
của các ngôn ngữ khác.
Nguồn
2010-06-13 19:06:42
Giả vờ một lúc, đây sẽ là một hệ thống mở có sẵn cho bất kỳ ai, làm cách nào họ sử dụng CodeSnippetExpression để gây ra sự tàn phá? Tôi không hoàn toàn hiểu nó được sử dụng như thế nào. Mã sẽ chỉ biên dịch mã được cung cấp với các thiết lập: GenerateExecutable = false; GenerateInMemory = true; và sau đó sẽ được gọi với provider.CompileAssemblyFromSource. – GenericTypeTea
@GenericTypeTea: Điểm cuối cùng là giả định rằng điều trước đó là đúng - nghĩa là, bạn tải và chạy assembly. –