当前位置: 首页 > 面试题库 >

要在mail()中使用的转义字符串

周伟泽
2023-03-14
问题内容

当然,在使用MySQL时,请使用mysqli_real_escape_string()并检查接收到的输入类型是否为您期望的类型(字符串,数字等),并且可以确定可以mysqli_query()安全地将其用作输入…对吗?

好吧,问题是:

  • 转义将在其中使用的字符串的最佳方法是什么mail()
  • 如果电子邮件收件人将是在文本字段中输入的电子邮件地址,那么我应该注意哪些事项以避免注入或利用?

我有一个很好的主意,该如何做,但是我正在研究有关此主题的最佳实践,以了解是否遗漏了某些东西,或者是否有更好的方法。

编辑:这个问题的想法是不具备 答案,而是要让所有的事情打理用PHP写电子邮件时的全面合作名单。


问题答案:

电子邮件注入背后的想法是,攻击者在电子邮件标题中注入换行符(LF),因此他可以添加任意数量的标题。删除这些换行符可以保护您免受这种攻击。有关详细信息,请访问http://www.phpsecure.info/v2/article/MailHeadersInject.en.php

最佳实践是依靠编写良好,经常更新且使用广泛的代码。为此,我建议使用PEAR_MAIL或Zend_Mail

如果您不想加载这些模块,或者需要保持非常简单。您可以从这些模块中提取过滤功能。尽管我确实建议使用它们并经常更新库,以便将来出现新的攻击时,您只需要更新库(Pear或Zend)就可以了。

这是清除Pear Mail包中的标头的函数

function _sanitizeHeaders(&$headers)
{
    foreach ($headers as $key => $value) {
        $headers[$key] =
            preg_replace('=((<CR>|<LF>|0x0A/%0A|0x0D/%0D|\\n|\\r)\S).*=i',
                         null, $value);
    }
}

Zend_Mail对电子邮件,名称和其他字段使用不同的过滤器:

function _filterEmail($email)
{
    $rule = array("\r" => '',
                  "\n" => '',
                  "\t" => '',
                  '"'  => '',
                  ','  => '',
                  '<'  => '',
                  '>'  => '',
    );

    return strtr($email, $rule);
}

function _filterName($name)
{
    $rule = array("\r" => '',
                  "\n" => '',
                  "\t" => '',
                  '"'  => "'",
                  '<'  => '[',
                  '>'  => ']',
    );

    return trim(strtr($name, $rule));
}

function _filterOther($data)
{
    $rule = array("\r" => '',
                  "\n" => '',
                  "\t" => '',
    );

    return strtr($data, $rule);
}


 类似资料:
  • 问题内容: 我正在使用Python创建XML文档。(逻辑结构-> XML字符串,反之则不行。) 如何使它转义我提供的字符串,以使它们无法弄乱XML? 问题答案: 您是说您要执行以下操作: 然后,您将获得很好的转义XML字符串:

  • 问题内容: 为了回答这个问题,我设法通过转义反斜杠来使字符串成为转义字符。 当我尝试将其概括为转义所有转义的字符时,它似乎无能为力: 但是对于特定的转义字符使用相同的方法,它确实起作用: 有一般的方法可以做到这一点吗?应包括,,,等。 问题答案: 使用r’text’将字符串定义为raw,如下面的代码所示:

  • 在 MySQL 中,除了常见的字符之外,我们还会遇到一些特殊的字符,如换行符、回车符等。这些符号无法用字符来表示,因此需要使用某些特殊的字符来表示特殊的含义,这些字符就是转义字符。 转义字符一般以反斜杠符号 开头,用来说明后面的字符不是字符本身的含义,而是表示其它的含义。MySQL 中常见的转义字符如下表所示。 转义字符 转义后的字符 \" 双引号(") \' 单引号(') \\ 反斜线(\) \

  • 在Bash中是否有需要转义的字符的全面列表?是否可以只使用检查它? 并且工作正常,没有转义。是否意味着不需要转义?这是检查必要性的好方法吗? 更一般的是:在和中转义的字符是否相同?

  • 问题内容: 根据选择器文档,必须使用双反斜杠等进行转义。 我有一个这样创建的选择器(假设属性在此示例中)。 我可以写一个正则表达式为我逃脱括号吗? 问题答案: 如果您希望某些东西具有任何价值,请尝试以下操作: 这可以通过用两个反斜杠转义jQuery文档的“ 选择器”页面上列出的所有CSS元字符来工作。 请记住,在您的情况下,无需执行此类棘手的操作。您可以使用过滤器功能选择具有给定值的所有选项元素,

  • 问题内容: 我正在寻找可以在SQL Server中正常工作的东西,类似于c#中的符号,它会使字符串按照原义被接受。例如: 注意@如何影响字符串按原样使用每个字符。 现在,我不确定这是否可行,但这是我的问题,也许有更好的方法来解决此问题。考虑以下基本查询: 我的问题是,如果他们放置,或其他任何会影响我的like子句的特殊字符。我希望比赛表现得像“开始于”功能。那么,有什么我可以应用到@searchT