PHP表单验证实例预防SQL注入的小经验

PHP表单中需引起注重的地方?
S E R V E R [ " P H P S E L F " ] 变 量 有 可 能 会 被 黑 客 使 用 ! 当 黑 客 使 用 跨 网 站 脚 本 的 H T T P 链 接 来 攻 击 时 , _SERVER["PHP_SELF"] 变量有可能会被黑客使用! 当黑客使用跨网站脚本的HTTP链接来攻击时, SERVER["PHPSELF"]使使HTTP_SERVER[“PHP_SELF”]服务器变量也会被植入脚本。原因就是跨网站脚本是附在执行文件的路径后面的,因此$_SERVER[“PHP_SELF”]的字符串就会包含HTTP链接后面的JavaScript程序代码。

XSS又叫 CSS (Cross-Site Script) ,跨站脚本攻击。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。
指定以下表单文件名为 “test_form.php”:

如何避免 $_SERVER[“PHP_SELF”] 被利用?
$_SERVER[“PHP_SELF”] 可以通过 htmlspecialchars() 函数来避免被利用。
form 代码如下所示:

使用 PHP 验证表单数据
首先我们对用户所有提交的数据都通过 PHP 的 htmlspecialchars() 函数处理。
当我们使用 htmlspecialchars() 函数时,在用户尝试提交以下文本域:

该代码将不会被执行,因为它会被保存为HTML转义代码,如下所示:

以上代码是安全的,可以正常在页面显示或者插入邮件中。
当用户提交表单时,我们将做以下两件事情:
使用 PHP trim() 函数去除用户输入数据中不必要的字符 (如:空格,tab,换行)。
使用PHP stripslashes()函数去除用户输入数据中的反斜杠 ()
接下来让我们将这些过滤的函数写在一个我们自己定义的函数中,这样可以大大提高代码的复用性。
将函数命名为 test_input()。
现在,我们可以通过test_input()函数来检测 $_POST 中的所有变量, 脚本代码如下所示:
实例

你可能感兴趣的:(PHP表单验证实例预防SQL注入的小经验)