搜索
首页后端开发php教程刚刚说到XSS攻击.
刚刚说到XSS攻击.Jun 13, 2016 am 10:43 AM
arrayhtmlspecialcharsquotreturn

刚说到XSS攻击..
我记得我之前做一个项目.就给检测出存在XSS攻击。

开始我没有过滤提交的内容。

后来foreach 循环过滤每一个变量$_GET...$_POST...,发现不行。

然后只好写了个函数 直接检测 $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"] 判断直接 exit...

不知道大家都是怎么处理这个问题的...


------解决方案--------------------
htmlspecialchars过滤
------解决方案--------------------
htmlspecialchars
------解决方案--------------------

探讨
怎么过滤 过滤 $_GET所有变量 ? 这样没用...我试过了.


引用:

htmlspecialchars过滤

------解决方案--------------------
PHP code
<?php $array = array("hello"=>"dsa");foreach($array as &$value){     $value = htmlspecialchars($value);}var_dump($array);array(1) {  ["hello"]=>  &string(11) "dsa<>"}<br><font color="#e78608">------解决方案--------------------</font><br>
探讨

你用
foreach($_GET as &$value){
$value=htmlspecialchars($value);}

这样来过滤?



引用:

引用:
怎么过滤 过滤 $_GET所有变量 ? 这样没用...我试过了.


引用:

htmlspecialchars过滤


没用是什……

------解决方案--------------------
给你这三个函数,你根据需求稍加修改就好了,以后要获取内容的时候不管是get还是post传值都用这样的方法来获取:
$变量名=Toget('参数名或表单内的项目名');

PHP code
//函数:获取数据//参数:表单名,是否需要转译Function Toget($__k,$Slash=True){    IF($__k==""){Return False;}    IF(Array_key_exists($__k,$_REQUEST)){        $Value=IsSet($_POST["".$__k.""])?$_POST["".$__k.""]:$_GET["".$__k.""];    }Else{        Return False;    }    IF(Is_array($Value)){        $Value=Array_Filter($Value,'_nul');    }Else{        $Value=Trim($Value);        IF($Value==""){Return False;}    }    IF($Slash){        $Value=Addlash($Value);    }    //反馈结果    IF(Is_array($Value)){Return $Value;}    IF($Value=="" Or !Isset($Value)){        Return False;    }Else{        Return $Value;    }}function Addlash($Str){    !Defined('MAGIC_QUOTES_GPC') && Define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc());    IF(!MAGIC_QUOTES_GPC){        IF(Is_array($Str)){            $keys=array_keys($Str);            Foreach($keys as $key){                $val=$Str[$key];unset($Str[$key]);                $Str[addslashes($key)]=Addlash($val);            }        }Else{            $Str=addslashes($Str);        }    }    Return $Str;}//清理数组中的空值//用法:Print_r (Array_Filter($Arr,'_nul'));Function _nul($param){    Return ($param!="") ? True : False;}<br><font color="#e78608">------解决方案--------------------</font><br>这个得mark一下,继续~<br><font color="#e78608">------解决方案--------------------</font><br>XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意脚本代码,当用户浏览该页之时,嵌入其中Web里面的脚本代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。<br><br>服务器端脚本防止 XSS 的唯一手段是检查传入的数据中是否有 script 标记<br>当然,攻击者还有 n 多的手段去直接在你的页面中嵌入恶意代码。这就不是服务器端脚本能解决的问题了<br>简单的用 htmlspecialchars 处理一下,只适合于其后只将传入的数据作为字符串显示的场合。<br>由于 <script xss></script><br>对于 #7 的 <img  src alt="刚刚说到XSS攻击." >显然使用的检测算法不是最大匹配算法,而是简单的包含算法<br>虽无大错,但误判率升高。宁可错杀三千,不可放过一个<br><br><br><br><br><font color="#e78608">------解决方案--------------------</font><br>
探讨

引用:

你用
foreach($_GET as &$value){
$value=htmlspecialchars($value);}

这样来过滤?
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
C语言return的用法详解C语言return的用法详解Oct 07, 2023 am 10:58 AM

C语言return的用法有:1、对于返回值类型为void的函数,可以使用return语句来提前结束函数的执行;2、对于返回值类型不为void的函数,return语句的作用是将函数的执行结果返回给调用者;3、提前结束函数的执行,在函数内部,我们可以使用return语句来提前结束函数的执行,即使函数并没有返回值。

Java中return和finally语句的执行顺序是怎样的?Java中return和finally语句的执行顺序是怎样的?Apr 25, 2023 pm 07:55 PM

源码:publicclassReturnFinallyDemo{publicstaticvoidmain(String[]args){System.out.println(case1());}publicstaticintcase1(){intx;try{x=1;returnx;}finally{x=3;}}}#输出上述代码的输出可以简单地得出结论:return在finally之前执行,我们来看下字节码层面上发生了什么事情。下面截取case1方法的部分字节码,并且对照源码,将每个指令的含义注释在

使用C#中的Array.Sort函数对数组进行排序使用C#中的Array.Sort函数对数组进行排序Nov 18, 2023 am 10:37 AM

标题:C#中使用Array.Sort函数对数组进行排序的示例正文:在C#中,数组是一种常用的数据结构,经常需要对数组进行排序操作。C#提供了Array类,其中有Sort方法可以方便地对数组进行排序。本文将演示如何使用C#中的Array.Sort函数对数组进行排序,并提供具体的代码示例。首先,我们需要了解一下Array.Sort函数的基本用法。Array.So

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决Jun 13, 2016 am 10:23 AM

php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code<form name="myform"

简单明了的PHP array_merge_recursive()函数使用方法简单明了的PHP array_merge_recursive()函数使用方法Jun 27, 2023 pm 01:48 PM

在进行PHP编程时,我们常常需要对数组进行合并。PHP提供了array_merge()函数来完成数组合并的工作,不过当数组中存在相同的键时,该函数会覆盖原有的值。为了解决这个问题,PHP在语言中还提供了一个array_merge_recursive()函数,该函数可以合并数组并保留相同键的值,使得程序的设计变得更加灵活。array_merge

如何使用PHP中的array_combine函数将两个数组拼成关联数组如何使用PHP中的array_combine函数将两个数组拼成关联数组Jun 26, 2023 pm 01:41 PM

在PHP中,有许多强大的数组函数可以使数组的操作更加方便和快捷。当我们需要将两个数组拼成一个关联数组时,可以使用PHP的array_combine函数来实现这一操作。这个函数实际上是用来将一个数组的键作为另一个数组的值,合并成一个新的关联数组。接下来,我们将会讲解如何使用PHP中的array_combine函数将两个数组拼成关联数组。了解array_comb

Vue3怎么使用setup语法糖拒绝写returnVue3怎么使用setup语法糖拒绝写returnMay 12, 2023 pm 06:34 PM

Vue3.2setup语法糖是在单文件组件(SFC)中使用组合式API的编译时语法糖解决Vue3.0中setup需要繁琐将声明的变量、函数以及import引入的内容通过return向外暴露,才能在使用的问题1.在使用中无需return声明的变量、函数以及import引入的内容,即可在使用语法糖//import引入的内容import{getToday}from&#39;./utils&#39;//变量constmsg=&#39;Hello!&#39;//函数func

详解JavaScript函数返回值和return语句详解JavaScript函数返回值和return语句Aug 04, 2022 am 09:46 AM

JavaScript 函数提供两个接口实现与外界的交互,其中参数作为入口,接收外界信息;返回值作为出口,把运算结果反馈给外界。下面本篇文章带大家了解一下JavaScript函数返回值,浅析下return语句的用法,希望对大家有所帮助!

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具