天天看点

常用的安全函数

Web应用中,安全是至关重要的,比写出漂亮的简洁的代码更为重要,那么今天咱们就来聊聊PHP中有哪些安全(过滤)函数

PHP的安全函数

  • addslashes
    • string addslashes ( string $str )
    • 使用反斜线引用字符串
    • 该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。
    • 这些字符是单引号(')、双引号(")、反斜线(\)与 NUL(NULL 字符)。
    • 一个使用 addslashes() 的例子是当你要往数据库中输入数据时。
    • 例如,将名字 O'reilly 插入到数据库中,这就需要对其进行转义。
    • 强烈建议使用 DBMS 指定的转义函数 (比如 MySQL 是 mysqli_real_escape_string(),PostgreSQL 是 pg_escape_string()),但是如果你使用的 DBMS 没有一个转义函数,并且使用 \ 来转义特殊字符,你可以使用这个函数。
    • 仅仅是为了获取插入数据库的数据,额外的 \ 并不会插入。
    • 当 PHP 指令 magic_quotes_sybase 被设置成 on 时,意味着插入 ' 时将使用 ' 进行转义。
    • PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默认是 on, 实际上所有的 GET、POST 和 COOKIE 数据都用被 addslashes() 了。
    • 不要对已经被 magic_quotes_gpc 转义过的字符串使用 addslashes(),因为这样会导致双层转义。
    • 遇到这种情况时可以使用函数 get_magic_quotes_gpc() 进行检测。
$str = "Is your name O'reilly?";
echo addslashes($str);  // 输出: Is your name O\'reilly?
           
  • htmlspecialchars
    • 将特殊字符转换为 HTML 实体
    • string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = TRUE ]]] )
    • 某类字符在 HTML 中有特殊用处,如需保持原意,需要用 HTML 实体来表达。
    • 本函数会返回字符转义后的表达。
    • 如需转换子字符串中所有关联的名称实体,使用 htmlentities() 代替本函数。
  • htmlentities
    • string htmlentities ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = ini_get("default_charset") [, bool $double_encode = true ]]] )
    • 将字符转换为 HTML 转义字符
    • 本函数各方面都和 htmlspecialchars() 一样, 除了 htmlentities() 会转换所有具有 HTML 实体的字符。
    • 如果要解码(反向操作),可以使用 html_entity_decode()。
  • strip_tags
    • 从字符串中去除 HTML 和 PHP 标记
    • string strip_tags ( string $str [, string $allowable_tags ] )
    • 该函数尝试返回给定的字符串 str 去除空字符、HTML 和 PHP 标记后的结果。它使用与函数 fgetss() 一样的机制去除标记。
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment" target="_blank" rel="external nofollow" >Other text</a>';
echo strip_tags($text);
echo "\n";

// 允许 <p> 和 <a>
echo strip_tags($text, '<p><a>');
           

版权声明:本文为CSDN博主「weixin_33694620」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_33694620/article/details/92011246