Maison php教程 php手册 php中html字符串过滤函数详解

php中html字符串过滤函数详解

May 25, 2016 pm 04:49 PM
select sql注入

在php中过滤html字符串的方法有很多,如果我们使用系统自带的可能不适合于提交表单类数据了,如果用自定的相对会好处理一些,下面我介绍了一些方法大家可参考参考。

自定义的一个函数

<?php
function StripHTML($string) {
    $pattern = array(
        "&#39;<script[^>]*?>.*?</script>&#39;si",
        "&#39;<style[^>]*?>.*?</style>&#39;si",
        "&#39;<[/!]*?[^<>]*?>&#39;si",
        "&#39;([rn])[s]+&#39;",
        "&#39;&(quot|#34);&#39;i",
        "&#39;&(amp|#38);&#39;i",
        "&#39;&(lt|#60);&#39;i",
        "&#39;&(gt|#62);&#39;i",
        "&#39;&(nbsp|#160);&#39;i",
        "&#39;&(iexcl|#161);&#39;i",
        "&#39;&(cent|#162);&#39;i",
        "&#39;&(pound|#163);&#39;i",
        "&#39;&(copy|#169);&#39;i",
        "&#39;&#(d+);&#39;e"
    );
    $replace = array(
        &#39;&#39;,
        &#39;&#39;,
        "1",
        &#39;&#39;,
        "&",
        "<",
        ">",
        &#39; &#39;,
        chr(161) ,
        chr(162) ,
        chr(163) ,
        chr(169) ,
        "chr(1)"
    );
    return preg_replace($pattern, $replace, $str);
}
?>
除了上面自定的函数之外还有一个php自带的过滤html的函数:strip_tags(string) 这样就可以过滤掉所有的html标签了。
如果想过滤掉除了<img  src="" alt="php中html字符串过滤函数详解 " >之外的所有html标签,则可以这样写:
 代码如下复制代码
strip_tags(string,"<img  alt="php中html字符串过滤函数详解 " >");
过滤除了<img  src="" alt="php中html字符串过滤函数详解 " ><p>xxx</p><b></b>之外的所有html标签,则可以这样写:
 代码如下复制代码
strip_tags(string,"<img  alt="php中html字符串过滤函数详解 " ><p><b>");
网上找到一个防sql注入函数
<?php
//php 批量过滤post,get敏感数据
if (get_magic_quotes_gpc()) {
    $_GET = stripslashes_array($_GET);
    $_POST = stripslashes_array($_POST);
}
function stripslashes_array(&$array) {
    while (list($key, $var) = each($array)) {
        if ($key != &#39;argc&#39; && $key != &#39;argv&#39; && (strtoupper($key) != $key || &#39;&#39; . intval($key) == "$key")) {
            if (is_string($var)) {
                $array[$key] = stripslashes($var);
            }
            if (is_array($var)) {
                $array[$key] = stripslashes_array($var);
            }
        }
    }
    return $array;
}
//--------------------------
// 替换HTML尾标签,为过滤服务 http://www.phprm.com
//--------------------------
function lib_replace_end_tag($str) {
    if (empty($str)) return false;
    $str = htmlspecialchars($str);
    $str = str_replace(&#39;/&#39;, "", $str);
    $str = str_replace("", "", $str);
    $str = str_replace("&gt", "", $str);
    $str = str_replace("&lt", "", $str);
    $str = str_replace("<SCRIPT>", "", $str);
    $str = str_replace("</SCRIPT>", "", $str);
    $str = str_replace("<script>", "", $str);
    $str = str_replace("</script>", "", $str);
    $str = str_replace("select", "select", $str);
    $str = str_replace("join", "join", $str);
    $str = str_replace("union", "union", $str);
    $str = str_replace("where", "where", $str);
    $str = str_replace("insert", "insert", $str);
    $str = str_replace("delete", "delete", $str);
    $str = str_replace("update", "update", $str);
    $str = str_replace("like", "like", $str);
    $str = str_replace("drop", "drop", $str);
    $str = str_replace("create", "create", $str);
    $str = str_replace("modify", "modify", $str);
    $str = str_replace("rename", "rename", $str);
    $str = str_replace("alter", "alter", $str);
    $str = str_replace("cas", "cast", $str);
    $str = str_replace("&", "&", $str);
    $str = str_replace(">", ">", $str);
    $str = str_replace("<", "<", $str);
    $str = str_replace(" ", chr(32) , $str);
    $str = str_replace(" ", chr(9) , $str);
    $str = str_replace("    ", chr(9) , $str);
    $str = str_replace("&", chr(34) , $str);
    $str = str_replace("&#39;", chr(39) , $str);
    $str = str_replace("<br />", chr(13) , $str);
    $str = str_replace("&#39;&#39;", "&#39;", $str);
    $str = str_replace("css", "&#39;", $str);
    $str = str_replace("CSS", "&#39;", $str);
    return $str;
}
?>
Copier après la connexion

使用方法

引用是直接这样:

$xxx = htmlspecialchars($_POST['xxx']);

或者

$xxx = htmlspecialchars($_GET['xxx']);


文章地址:

转载随意^^请带上本文地址!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser exp pour l'injection d'erreurs SQL Comment utiliser exp pour l'injection d'erreurs SQL May 12, 2023 am 10:16 AM

0x01 Préface Présentation L'éditeur a découvert un autre double débordement de données dans MySQL. Lorsque nous obtenons les fonctions dans MySQL, l'éditeur s'intéresse davantage aux fonctions mathématiques. Elles doivent également contenir certains types de données pour enregistrer les valeurs. L'éditeur a donc exécuté un test pour voir quelles fonctions provoqueraient des erreurs de débordement. Puis l'éditeur a découvert que lorsqu'une valeur supérieure à 709 est passée, la fonction exp() provoquera une erreur de débordement. mysql>selectexp(709);+-----------------------+|exp(709)|+---------- - -----------+|8.218407461554972

Connaissances de base en sécurité de Nginx : prévenir les attaques par injection SQL Connaissances de base en sécurité de Nginx : prévenir les attaques par injection SQL Jun 10, 2023 pm 12:31 PM

Nginx est un serveur Web rapide, performant et évolutif, et sa sécurité est un problème qui ne peut être ignoré dans le développement d'applications Web. Surtout les attaques par injection SQL, qui peuvent causer d’énormes dégâts aux applications Web. Dans cet article, nous verrons comment utiliser Nginx pour empêcher les attaques par injection SQL afin de protéger la sécurité des applications Web. Qu’est-ce qu’une attaque par injection SQL ? L'attaque par injection SQL est une méthode d'attaque qui exploite les vulnérabilités des applications Web. Les attaquants peuvent injecter du code malveillant dans les applications Web

Comment masquer l'élément select dans jquery Comment masquer l'élément select dans jquery Aug 15, 2023 pm 01:56 PM

Comment masquer l'élément select dans jquery : 1. méthode hide(), introduisez la bibliothèque jQuery dans la page HTML, vous pouvez utiliser différents sélecteurs pour masquer l'élément select, le sélecteur ID remplace le selectId par l'ID de l'élément select que vous utilisez réellement ; 2. la méthode css(), utilisez le sélecteur d'ID pour sélectionner l'élément de sélection qui doit être masqué, utilisez la méthode css() pour définir l'attribut d'affichage sur aucun et remplacez selectId par l'ID de l'élément de sélection.

Méthode de traitement asynchrone de la programmation simultanée Select Channels Go à l'aide de Golang Méthode de traitement asynchrone de la programmation simultanée Select Channels Go à l'aide de Golang Sep 28, 2023 pm 05:27 PM

Méthode de traitement asynchrone de la programmation simultanée SelectChannelsGo à l'aide de golang Introduction : La programmation simultanée est un domaine important dans le développement de logiciels modernes, qui peut améliorer efficacement les performances et la réactivité des applications. Dans le langage Go, la programmation simultanée peut être implémentée de manière simple et efficace à l'aide des instructions Channels et Select. Cet article explique comment utiliser Golang pour les méthodes de traitement asynchrone de la programmation simultanée SelectChannelsGo et fournit des informations spécifiques.

Conseils de programmation PHP : comment prévenir les attaques par injection SQL Conseils de programmation PHP : comment prévenir les attaques par injection SQL Aug 17, 2023 pm 01:49 PM

Conseils de programmation PHP : Comment prévenir les attaques par injection SQL La sécurité est cruciale lors de l'exécution d'opérations de base de données. Les attaques par injection SQL sont une attaque réseau courante qui exploite la mauvaise gestion par une application des entrées utilisateur, entraînant l'insertion et l'exécution de code SQL malveillant. Pour protéger notre application contre les attaques par injection SQL, nous devons prendre quelques précautions. Utiliser des requêtes paramétrées Les requêtes paramétrées constituent le moyen le plus simple et le plus efficace de prévenir les attaques par injection SQL. Cela fonctionne en comparant les valeurs saisies par l'utilisateur avec une requête SQL

Détection et réparation des vulnérabilités d'injection PHP SQL Détection et réparation des vulnérabilités d'injection PHP SQL Aug 08, 2023 pm 02:04 PM

Présentation de la détection et de la réparation des vulnérabilités d'injection SQL PHP : L'injection SQL fait référence à une méthode d'attaque dans laquelle les attaquants utilisent des applications Web pour injecter de manière malveillante du code SQL dans l'entrée. PHP, en tant que langage de script largement utilisé dans le développement Web, est largement utilisé pour développer des sites Web et des applications dynamiques. Cependant, en raison de la flexibilité et de la facilité d'utilisation de PHP, les développeurs ignorent souvent la sécurité, ce qui entraîne l'existence de vulnérabilités d'injection SQL. Cet article explique comment détecter et corriger les vulnérabilités d'injection SQL dans PHP et fournit des exemples de code pertinents. vérifier

Comment implémenter la liaison d'événement de changement d'éléments sélectionnés dans jQuery Comment implémenter la liaison d'événement de changement d'éléments sélectionnés dans jQuery Feb 23, 2024 pm 01:12 PM

jQuery est une bibliothèque JavaScript populaire qui peut être utilisée pour simplifier la manipulation du DOM, la gestion des événements, les effets d'animation, etc. Dans le développement Web, nous rencontrons souvent des situations dans lesquelles nous devons modifier la liaison d'événements sur des éléments sélectionnés. Cet article explique comment utiliser jQuery pour lier des événements de modification d'éléments sélectionnés et fournit des exemples de code spécifiques. Tout d'abord, nous devons créer un menu déroulant avec des options utilisant des étiquettes :

Notes de développement Laravel : méthodes et techniques pour empêcher l'injection SQL Notes de développement Laravel : méthodes et techniques pour empêcher l'injection SQL Nov 22, 2023 pm 04:56 PM

Notes de développement de Laravel : méthodes et techniques pour empêcher l'injection SQL Avec le développement d'Internet et les progrès continus de la technologie informatique, le développement d'applications Web est devenu de plus en plus courant. Au cours du processus de développement, la sécurité a toujours été une question importante que les développeurs ne peuvent ignorer. Parmi eux, la prévention des attaques par injection SQL est l’un des problèmes de sécurité qui nécessite une attention particulière lors du processus de développement. Cet article présentera plusieurs méthodes et techniques couramment utilisées dans le développement de Laravel pour aider les développeurs à prévenir efficacement l'injection SQL. Utilisation de la liaison de paramètres La liaison de paramètres est Lar

See all articles