【发布时间】:2012-04-28 17:31:03
【问题描述】:
我有一个网站,我在服务器端使用 PHP 并使用 mysql 作为数据库。我使用以下脚本从数据库中检索数据。谁能让我知道这段代码是否容易受到注入攻击?如果可以,请给个解决方案?
<?php
// PHP script
$usrname=$_POST['usrname'];
$_SESSION['usremail']=$usrname;
$usrpassword=$_POST['passwd'];
$db=mysql_select_db('mydb',$connection);
$result=mysql_query("select usrfname,usrlname from userinformation where usremail='$usrname' and usrpassword='$usrpassword'") or die('failed to login');
非常感谢任何帮助。
谢谢
【问题讨论】:
-
这是测验题吗?
$usrname的值从何而来?如果有的话,它是如何“保护”的? -
是的,这很容易被注入。此外,您似乎正在以明文形式存储密码;不是一个好主意。
-
当您对问题投反对票时,请给出理由。这是一个非常好的问题,绝对不会“过于本地化”。
-
@pst: 在
$_POST它必须来自一个表单,我看不出有任何(认真)保护它的方法。 -
@nico 因此引用。此外,“保护”有多种类型,唯一适用于 SQL-Injection 的一种是确保语句结构不会被更改的那种;但是,可能还有其他非 SQL 注入使用问题。 (占位符是这个问题的通用解决方案。)