刚刚说到XSS攻击.

Jun 13, 2016 am 10:43 AM
array htmlspecialchars quot return

刚说到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 までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

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;}}}#出力 上記のコードの出力は、単純に次のように結論付けることができます:finally の前に return が実行されます。バイトコード レベルで何が起こるかを見てみましょう。以下は、case1 メソッドのバイトコードの一部をインターセプトし、ソース コードを比較して、各命令の意味に注釈を付けます。

C# の Array.Sort 関数を使用して配列を並べ替える C# の Array.Sort 関数を使用して配列を並べ替える Nov 18, 2023 am 10:37 AM

タイトル: Array.Sort 関数を使用して C# で配列を並べ替える例 本文: 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

PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 PHP で array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法 Jun 26, 2023 pm 01:41 PM

PHP には、配列操作をより便利かつ高速にする強力な配列関数が多数あります。 2 つの配列を結合して連想配列にする必要がある場合、PHP の array_combine 関数を使用してこの操作を実行できます。この関数は、実際には、ある配列のキーを別の配列の値として新しい連想配列に結合するために使用されます。次に、PHP の array_combine 関数を使用して 2 つの配列を結合して連想配列にする方法を説明します。 array_comb について学ぶ

PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 PHPのarray_merge_recursive()関数を使用するシンプルで明確な方法 Jun 27, 2023 pm 01:48 PM

PHP でプログラミングする場合、多くの場合、配列をマージする必要があります。 PHP には、配列のマージを完了するための array_merge() 関数が用意されていますが、配列内に同じキーが存在する場合、この関数は元の値を上書きします。この問題を解決するために、PHP は配列をマージして同じキーの値を保持できる array_merge_recursive() 関数を言語で提供し、プログラム設計をより柔軟にします。配列マージ

Vue3 はセットアップ構文シュガーをどのように使用して return の書き込みを拒否しますか Vue3 はセットアップ構文シュガーをどのように使用して return の書き込みを拒否しますか May 12, 2023 pm 06:34 PM

Vue3.2 セットアップ構文シュガーは、単一ファイル コンポーネント (SFC) で結合された API を使用して、Vue3.0 の面倒なセットアップを解決するコンパイル時構文シュガーです。宣言された変数、関数、インポートによって導入されたコンテンツは、インポートによって公開されます。使用上の問題点 1. 宣言した変数、関数、import で導入した内容を使用中に return する必要はなく、糖衣構文を使用することができます。 // 導入した内容をインポート import{getToday }from'./utils'//variable constmsg='Hello !'//function func

JavaScript で return キーワードを使用する JavaScript で return キーワードを使用する Feb 18, 2024 pm 12:45 PM

JavaScript での return の使用には特定のコード例が必要です。 JavaScript では、return ステートメントを使用して関数から返される値を指定します。関数の実行を終了するために使用できるだけでなく、関数が呼び出された場所に値を返すこともできます。 return ステートメントには次の一般的な用途があります。 値を返す return ステートメントは、関数が呼び出された場所に値を返すために使用できます。簡単な例を次に示します。 functionadd(a,b){

See all articles