本文改自: http://blog.51yip.com/php/1031.html

用户输入的东西是不可信认的,例如,用户注册,用户评论等,这样的数据,你不光要做好防sql的注入,还要防止JS的注入,html的注入。

一,javascript注入的危害

举个简单的例子,我在一个网站留言了,并且这个网站没有对 JS 进行过滤,我在留言中加入以下内容:

    <script type="text/javascript">
while (true) {
alert('我弹!');
}
</script>

上面的代码虽然简单,可是可以无限循环,并且会一直弹东西出来,让人感觉很不爽,直到浏览器没有响应为止。浏览您网站的人,第一反应肯定是这个网站有病毒,而离开你的网站。

针对如上的情况,这里有两种解决方案

第一种方案:使用 htmlspecialchars 函数转换特殊字符和使用 nl2br 函数插入一些必要的 <br /> 标签。

代码清单:

得到源码为:

&lt;script type=&quot;text/javascript&quot;&gt;<br />
while (true) {<br />
alert('我弹!');<br />
}<br />
&lt;/script&gt;
 

而浏览器会把 js 代码原样输出来。这种方案百度贴吧就是这么干的。

第二种方案:把评论内容中出现的所有的<script...>,</script>去掉

代码清单:

    $comment = preg_replace("/<[^><]*script[^><]*>/i",'',$comment); //把评论内容中出现的所有的<script...>,</script>去掉  

得到源码为:

 
    while (true) {
alert('我弹!');
}

这样的话,因为这段代码缺少<script></script>,所以运行不起来。

二,html注入的危害

1,容易引起页面错乱,对用户输入 html 标签不做处理的话,在读取的时候,很有可能就会破坏页面的布局。

2,影响 seo,做 seo 的人都知道,pr 高的网址,如果有链接,链到你的网站的话,可以加大自己网站的权重,这也是为什么有那么多人喜欢在高 pr 网站灌水的原因了。如果你没有对 html 标签进行处理的话,我输入以下内容

<a href="http://XXX.com" style="display:none;">XXX.COM</a>  

XXX.COM是个不河蟹网站,政府肯定会河蟹的,如果你的网站有链接到这样的网址,很有可能导致网站权重降低。

危害肯定不止这二个,因此要对这些html标签进行处理

处理的方法很简单:使用 strip_tags() 函数即可。

安全过滤javascript,html,防止跨脚本攻击的更多相关文章

  1. IBM Rational AppScan:跨站点脚本攻击深入解析

    IBM Rational AppScan:跨站点脚本攻击深入解析    了解黑客如何启动跨站点脚本攻击(cross-site scripting,XSS),该攻击危害(及不危害)什么,如何检测它们,以 ...

  2. 跨站点脚本攻击XSS

    来源:http://www.freebuf.com/articles/web/15188.html 跨站点脚本攻击是一种Web应用程序的攻击,攻击者尝试注入恶意脚本代码到受信任的网站上执行恶意操作.在 ...

  3. ASP.NET Core中的OWASP Top 10 十大风险-跨站点脚本攻击 (XSS)

    不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: https://dotnetcoretutorials.com/201 ...

  4. HTTP攻击与防范-跨网站脚本攻击

    实验目的 1.了解XSS -跨网站脚本攻击带来的危险性. 2.掌握XSS -跨网站脚本攻击的原理与方法 3.掌握防范攻击的方法 实验原理 跨网站脚本攻击之所以会发生,是因为网站的Web应用程序对用户的 ...

  5. CSRF跨站请求伪造与XSS跨域脚本攻击讨论

    今天和朋友讨论网站安全问题,聊到了csrf和xss,刚开始对两者不是神明白,经过查阅与讨论,整理了如下资料,与大家分享. CSRF(Cross-site request forgery):跨站请求伪造 ...

  6. XFS: Cross Frame Script (跨框架脚本) 攻击。

    一.Cross Frame Script (跨框架脚本) 攻击什么是Cross Frame Script?很简单,做个实验就知道了.把下面的这段HTML代码另存为一个html文件,然后用ie浏览器打开 ...

  7. Cross Frame Script (跨框架脚本) 攻击

    一.Cross Frame Script (跨框架脚本) 攻击 什么是Cross Frame Script? 很简单,做个实验就知道了.把下面的这段HTML代码另存为一个html文件,然后用ie浏览器 ...

  8. 用shell脚本批量进行xss跨站攻击请求

    由于执行的xss攻击请求他多了,初步估计要执行83次,而且还要执行3篇,如果手工一个一个去执行,说出去,我还配叫自动化大师吗: 有鉴于此,边打算自己编写一个脚本进行批量执行: 而短脚本的编写,非she ...

  9. 【快学SpringBoot】过滤XSS脚本攻击(包括json格式)

    若图片查看异常,请前往掘金查看:https://juejin.im/post/5d079e555188251ad81a28d9 XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cas ...

随机推荐

  1. JavaScript里面的居民们3-去除空格和重复

    如代码,分别实现 diyTrim 及 removeRepetition 函数,并跑通代码中的测试用例. <!DOCTYPE html> <html> <head> ...

  2. Angular-ui/bootstarp modal 主控制器与模态框控制器传值

    调用模态框: $scope.open = function (size) { //这里很关键,是打开模态框的过程 var modalInstance = $uibModal.open({ animat ...

  3. mysql的一些sql用法

    mysql中修改列名: alter table 表名 change abc def 列类型;比如 alter table student change pws psw char(10);

  4. Oracle中的索引详解(转载)

    一. ROWID的概念 存储了row在数据文件中的具体位置:64位 编码的数据,A-Z, a-z, 0-9, +, 和 /, row在数据块中的存储方式 SELECT ROWID, last_name ...

  5. VS2010环境开发Teamcenter ITK

    前言 这篇文章主要是用Teamcenter ITK开发的入门配置教程.几个月前学习ITK开发时,领导要求将配置过程整理成学习笔记.最近同事要做ITK开发,就发给他了.感觉这篇文章对别人还是有帮助的,决 ...

  6. 139.00.003 Git学习-Git时光机之Inbox体系(三)

    一.Git时光机之Inbox 体系 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库. Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有G ...

  7. Unity导出APk出错解决方法二

    错误提示(需得打开编辑器log文件才能看到全部log,Unity3d只显示一部分): Error building Player: CommandInvokationFailure: Unable t ...

  8. ES6入门——数值的扩展

    1.二进制和八进制表示法 ES6提供了二进制和八进制数值的新的写法,分别用前缀0b或0B和0o或0O表示. 2.Number.isFinite(),Number.isNaN() ES6在Number对 ...

  9. silverlight generic.xaml 包含中文 编译错误的问题

    发现我在一个dll工程里面新建一个xaml文件起名成generic.xaml 如果这个xaml里面存在中文则会编译错误,发现这样建立的xaml使用的是gb2312编码 果断文件-另存为-编码另存为 u ...

  10. 新开篇关于vue

    参考链接:http://cn.vuejs.org/v2/guide/instance.html 了解vue组件的生命周期: 1.beforeCreate 即将创建 2.created 创建 3.bef ...