我正在研究ASP.Net C#+ jQuery ajax网站项目。我试图防止xss攻击,我知道下面并不是完整的方法,但这至少是我应该做的 - 在接受用户的免费字符串输入时使用HtmlEncode)。而且我真的很乐意检查我是否做对了。防止XSS攻击
假设我们有一个场景,其中一个页面控件是一个“描述”文本框,用户可以输入用于描述其产品的“免费”字符串。为防止xss攻击输入,在服务器端页面方法中,我使用HtmlUtility.HtmlEncode()
打包了“说明”文本,因此在进入数据库之前该字符串将被解释为纯文本,即<script>
变为>script<
。
下面的部分是我所怀疑的 - 如何处理html编码的文本,然后将其返回给用户?
当用户想查看输入的描述文本时,网站从数据库中检索并打印出来。
对描述执行html解码是合乎逻辑的,所以用户不会看到那些奇怪的><
字符?它会首先破坏使用HtmlEncode的目的吗?如果是的话,这是正确的jQuery行解码和打印文本回给用户?
$("#txtDescription").val($(this).html(obj.Description).text();
谢谢你非常非常
嗨Kolink,谢谢你的回复:)。最好是将文本保存到数据库中,使用未经过滤的原始格式,但是在进入数据库之前,我的系统需要进行包装,不管怎样,我不知道如何将其打印回用户 – user1487182
我们应该向用户打印奇怪的字符,还是在打印之前先解码字符是正常的做法?如果是这样,如何处理这部分?我需要打印这些值回文本框和它显示像" > <脚本>警报(' XSS ')< /脚本>谢谢你这么多 – user1487182
这将是有益的事情,如果有人说出为什么你不应该编码文本进入数据库......特别是因为答案有5票(页面上最多)。 – EleventyOne