问答

最近看一篇关于web安全的文章 有一句话没明白

作者:admin 2021-04-20 我要评论

说 任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来 任何内容 意思是说不仅仅是用户可以控制的变量吗? 之前的理解是为防止sql注入或xss...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

说 任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来
任何内容 意思是说不仅仅是用户可以控制的变量吗?
之前的理解是为防止sql注入或xss 所有用户输入的变量输出到html或javascript时都要做过滤 这个任何输出如何理解?
有高手给解答一下吗?

###

啥叫“用户可以控制的变量”?

你指的是单纯的 UGC 内容?

可一个动态站点里不一定所有内容都是用户在客户端前台提交才产生的啊,你的后台管理系统或是 API 接口能百分百确保防 XSS 了吗?

###

这里说的应该是,对于用户输入的内容,输出到页面的时候要做 htmlencode. 比如:用户输入了

<input type="button" />

输出到HTML时 应该转成

&lt;input type=&quot;button&quot; /&gt;

不然的话,可能会直接在页面上 显示了一个按钮,而不是文本本身。

###

做web安全,一定要坚持的一点:不相信任何用户输入的任何内容。

该encode就encode,该敏感字符过滤就过滤。防止xss最有效的做法。就是任何用户内容输出时候 加上htmlspecialencode 去解决。

###

en-code是为了防止用户输入一些xxs脚本,比如<script>window.location.href="https://www.baidu.com"</script>,如果你不做任何处理,你打开网页就直接跳到百度去了

###

肯定不是任何内容都要过滤啊。

只有用户输入的内容才必须过滤,因为其中可能会有开发者预期外的内容,导致预期外的效果。
其他要输出的内容都是开发者定义的内容,原样输出就是符合开发者预期的。

比如业务需要开发者在不同的情况下在这里输出不同的html内容,在那里输出不同的js代码,还过滤个啥,功能还要不要实现了。

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器