PHP - 安全问题。我是否可以安全地使用SQL注入/ XSS

时间:2016-03-19 18:57:31

标签: php mysql xss sql-injection

这个问题无处不在,我看了很多答案。很多建议使用mysql_real_escape_string但这不是一个选项,因为它现在已经折旧了。 作为PHP / SQL的新手,特别是在安全方面,我只能希望你们中的一些人能够在这里提供帮助。我知道一个事实,我已经使用的一些程序有助于安全性(作为一个例子:我在定义query_params之前没有使用:pname。这导致SQL解释像'values'这样的提交; drop table dbname; as actual从命令未被执行中拯救我的一件事是将空格转换为下划线。

'search_submit.php'中的PHP代码

<?php
$pname=str_replace(' ','_',strtolower($_GET['pname']));
require 'connection.php';
  if(isset($_GET['pname'])){

  if(preg_match("/\w/i", $_GET['pname'])){
   $query="SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE   SCHEMA_NAME = :pname;";
           $query_params = array( 
             ':pname' => str_replace(' ','_',strtolower($_GET['pname']))
        );
   $prep=$conn->prepare($query);
   $result=$prep->execute($query_params) or die("failed!");
   $row = $prep->fetch(); 
        if($row) 
        { 
            die("Exists"); 
        }
        else{
            echo("doesn't");
        }
  }
  }
  else{
  echo  "<p>Error</p>";
  }
?>

'index.html'中的HTML代码:

<form  method="get" action="search_submit.php"  id="searchform">
  <input  type="text" name="pname">
  <input  type="submit" name="input" value="Search">

截至目前,所有内容似乎都运行正常,任何偷偷摸摸的提交都只是被解释为文本。但我是一个非常偏执的人。

非常感谢任何建议/更改。

0 个答案:

没有答案