免责声明:我知道在99%的情况下,您不应该在串联字符串中"序列化"数据.
你们在众所周知的情况下使用了什么样的字符:
string str = userId +"-"+ userName;
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,我已经回到了| (管道)但是,在某些情况下,用户甚至会输入.那么像non(ALT + 9999)这样的"不可打字"字符怎么样?
这取决于太多因素来给出具体答案.
首先,为什么是这样做?如果您觉得需要存储userId并userName以这种方式组合它们,请考虑其他方法,例如CSV样式引用或类似方法.
其次,在正常情况下,只应使用不属于字符串的分隔符.如果userId只是一个数字,那么" - "就好了......但如果数字可能是负数怎么办?
第三,这取决于你打算用字符串做什么.如果它只是用于记录或调试或其他形式的人类消费,那么你可以放松一点,只需选择一个看起来合适的分隔符.如果您计划存储这样的数据,请使用分隔符,以确保您可以在以后正确提取数据,而不管userId或的值如何userName.如果你能逃脱它,请使用\0例如.如果任一值来自不受信任的源(即Internet),则确保分隔符不能用作任一字符串中的字符.通常你会限制每个包含的字符 - 例如,数字userId和字母,数字和一些标点字符userName.
如果用于数据存储和检索,则无法保证用户不会找到将分隔符插入字符串的方法。安全的做法是以某种方式预处理输入:
-有特殊字符-输入中遇到a ,请用代替-0。--为您的分隔符因此userid = "alpha-dog",userName = "papa--0bear"将被翻译成
alpha-0dog--papa-0-00bear
Run Code Online (Sandbox Code Playgroud)
重要的是,您的方案必须完全不可撤销,并且无论用户输入什么内容,用户都不应破坏它。
本质上,这是非常原始的消毒版本。
| 归档时间: |
|
| 查看次数: |
4391 次 |
| 最近记录: |