我们有一个网站,用户可以有理由拒绝来自其他用户的内容。原因是通过电子邮件发送给其他用户。
哪些字符可以发送给其他用户? 我不打算对不需要的字符进行正则表达式搜索,而只是想在原因中保留“潜在的”“安全”字符。
例如原因:
"Hello <b>Dear User B"
将转变为:
"Hello bDear User B"
目前我只是在char数组上做“Where”并通过
定义我的“安全”条件char.IsLetterOrDigit || char.IsPunctuation || char.IsWhiteSpace
有没有更好的技巧?
答案 0 :(得分:3)
您可以在电子邮件正文中完美地使用HTML。这将允许更漂亮的格式。您可以在通过电子邮件发送之前使用用户输入上的AntiXSS library来过滤HTML中的危险内容(例如<script>
标记之类的内容)。
答案 1 :(得分:1)
您可以尝试在C#中使用HttpEncoder类,并在字符串上使用htmlEncode方法。 这将全部转为&lt; &GT;进入与&amp; lt;相当的html等。返回一个安全的字符串。
虽然所有的&amp; lt;看起来都很难看在电子邮件中有点类似的东西,你可以把它看作是一个潜在的安全工作。
如果您要将注释插入数据库中,我也不建议使用此方法,因为它不是sql-injection证明。在这种情况下,您可以使用htmlencode发送电子邮件并使用参数插入数据库。
答案 2 :(得分:0)
如果您认为ascii值为32到126的字符对您来说是安全的,那么您可以使用
bool bad = value.Any(c => c < 32 || c > 126);