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:
Sunday May 20 21:39:56 2018 - Source is not a valid member of Script
There is no way to create a ProtectedString value.
Getting around the Source property
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: