A ProtectedString is a data type that cannot be read or written to by LocalScripts or Scripts. For example, the Source property of Script is a ProtectedString. Attempts to read it from a normal script result in an error:
This would print an error:
Friday Sep 22 09:47:56 2017 - Source is not a valid member of Script
There is no way to create a ProtectedString value.
This is a major obstacle that gets in the way of many scripters all around Roblox. Many scripters will try to set the Source property the conventional way:
The Script's source:
The source code's Value: