【发布时间】:2012-04-12 09:57:13
【问题描述】:
我正在创建一个验证用户输入的文本的函数。由于我对输入文本有多种用途,因此我希望该功能能够涵盖尽可能多的领域,以考虑让用户在网站的任何部分输入文本的安全问题。我目前使用各种代码来根据需要验证各种输入,并试图将其安全部分整合到一个函数中,并将正则表达式(电子邮件、电话、密码验证)整合到另一个可以在整个网站上使用的函数中。
我有一个与此相关的问题。
在根据数据库中的信息检查输入时,我使用这一位过滤来清理用户输入:
$find = strtoupper($find);
$find = strip_tags($find);
$find = trim ($find);
$_SESSION['find'] = $find;
$keywords_array = explode(' ', $find);
如果我使用strip_tags,在上面应用的过滤之前验证这样的输入是否有意义:
if (preg_match("#\bscript\b#",$_POST['search']))
{
// Get user ip
// Log client details to DB
$GLOBALS['errorFocus'] = "autofocus class='thisInputIsError'";
$GLOBALS['searchError'] = '<p>Your IP has been logged!</p>';
}
如果是这样,我应该注意哪些其他标签?
关于我尝试组合的功能,我还应该注意哪些其他事项?
任何涵盖此内容的 GOOD 教程的链接也很棒 :)
谢谢!
【问题讨论】:
-
我认为你在寻找所有可能的脚本标签变体时会遇到一些问题,因为有很多方法可以尝试和执行 js。 ha.ckers.org/xss.html 为您提供了一些可以用来攻击网站的好例子。
-
一般来说,我不会将“您的 IP 已被记录”消息放在 Web 应用程序中。将
script标记插入页面变量的人可能不是黑客(例如,他们可能正在跟踪恶意链接)。一定要记录他们的 IP,但只需抛出一个漂亮的 404 或重定向到您的主页。 -
@Anton 非常感谢您的链接 :)
标签: php validation input