我遇到了一个问题。编写了以下代码片段:
teksti = teksti.Trim()
teksti = Replace(teksti, "<", "& lt;")
teksti = Replace(teksti, ">", "& gt;")
teksti = Replace(teksti, """", "& quot;")
teksti = Replace(teksti, "'", "& #8217;")
teksti = Replace(teksti, "%", "& #37;")
teksti = Replace(teksti, "&", "& amp;")
teksti = Replace(teksti, "#", "& #35;")
teksti = Replace(teksti, "@", "& #64;")
写完这篇文章后,我意识到它变成了它自己的问题。该函数应该使 HTML 和 SQL 注入的信息安全(还有其他方法,参数化查询等,但这不是重点)。但是会发生什么,它首先替换<
为& lt;
,然后再次替换新写入的字符串,因为每个替换字符串都有 &、# 和 ; 签到。
有什么提示吗?我考虑过为此使用正则表达式,但我找不到任何足够简单的像样的 Visual Basic 示例。
编辑:感谢您的提示。我确信会有一种“聪明”的简单方法来做到这一点,但我想毕竟没有可用的通用方法。首先重新安排问题案例是这里明显的解决方案,谢谢。我想工作日太长了,我没有注意到。:D
至于参数化查询,回头看看我发现我的英语没有按预期出现。我的意思是说我已经在使用它们,这里的这个问题是为了防止以后在其他地方使用相同的字符串进行各种 html 注入和可能的 sql 注入。再次感谢您的帮助。