PHP防止MySQL注入方法小解

在这篇文章中,我们将讨论防止SQL注入的重要性。作为一个phper,最重要的是时时检测你的站点的安全指数,以保证站点正常存活下去。

SQL代码注入技术,利用一个Web应用程序的安全漏洞。在有这些安全漏洞的情况,当用户输入的字符串文字转义字符中嵌入SQL语句或用户输入不强类型和意外执行或者不正确过滤。因此注入SQL命令从Web表单到数据库的应用程序。更改数据库的内容,或转储数据库中的信息,如信用卡或密码的攻击。SQL注入是一个网站的攻击向量,但大多被称为可以被用来攻击任何类型的SQL数据库

字符串过滤

这是一个主要的安全漏洞,允许SQL语句来执行,没有过滤的字符串。这意味着,当用户输入一个字符串将被传递到SQL语句,在数据库操作中产生。下面是一个脆弱的代码的SQL语句:

  1. $upassword = $_POST['upassword']; 
  2. $sqlquery = mysql_query("SELECT upassword FROM admin_user WHERE upassword = '"$upassword ."'"); 

上面的SQL查询的SELECT从表admin_user密码,如果用户输入的密码是"1 = 1"会导致在评估或1表不等于1,因此该查询将返回查询TRUE时,产生了积极的登录。

注入后选择admin_user WHERE upassword ="OR 1 = 1"upassword

保护SQL注入

您可以使用PHP的功能,如函数stripslashes()和addslashes(),mysql_real_escape_string()等,使安全的SQL查询。

以下是安全的SQL语句,使用PHP mysql_real_escape_string功能:

  1. $upassword = mysql_real_escape_string($_POST['upassword']); 
  2. $sqlquery = mysql_query("SELECT upassword FROM admin_user WHERE upassword = '"$upassword ."'"); 

上面的SQL语句是安全的,因为它执行转义字符串后查询。

后逃逸:选择从admin_user WHERE upassword ='\'or1 = 1 \"upassword"

转载请注明:代码家园 » PHP防止MySQL注入方法小解

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)