Tôi chỉ đang làm việc trên một giải pháp chuỗi cục bộ Lua, khi tôi nghĩ ra vấn đề này, tôi không biết làm cách nào để tránh bị tấn công bởi nó :) Vì vậy, tôi đã tự hỏi nếu có ai, đã làm điều gì đó tương tự và hoặc biết cách bảo vệ khỏi loại tấn công này. (Trong mã người dùng)Có cách nào để tránh sự cố bảo mật này trong Lua không?
Kể từ khi chúng ta có thể làm điều này:
=("foo"):upper() -->output: FOO
Nó có thể bị hack như thế này:
getmetatable("foo").__index.upper = function() print("bye bye sucker");os.exit() end
=("foo"):upper() -->output: bye bye sucker (application quits)
-- or this way
=string.upper("bar") -->output: bye bye sucker (application quits)
Bất kỳ ý tưởng?
Không cần phải sử dụng chuỗi có thể so sánh được; nó chỉ đơn giản là chuỗi bảng toàn cục. Vì vậy, bằng cách sử dụng string.upper = function ... người dùng cuối sẽ vẫn có thể thay đổi chức năng. – jpjacobs