一块用于防止黑客攻击的PHP代码

时间:2010-04-16 08:32:07

标签: php mysql security

我的网站上有一个php文件,我连接到db,获取一些记录并将它们列在同一个文件中。

mysql_connect("localhost", "blabla", "blabla") or die(mysql_error());
mysql_select_db("blabla") or die(mysql_error());

$blabla1 = mysql_query("SELECT * FROM gallery WHERE id_cat=1");
$blabla2 = mysql_query("SELECT * FROM gallery WHERE id_cat=2");
$blabla3 = mysql_query("SELECT * FROM gallery WHERE id_cat=3");

那么,我需要做些什么才能获得安全保障?像sql-injection或其他任何东西。没有什么可以写的。它只是www.blabla.com/gallery.php

6 个答案:

答案 0 :(得分:10)

此代码段非常安全,因为查询字符串中没有变量。

为了安全地工作,以防有一天你必须处理变量 - 无论是直接来自用户还是来自其他数据源 - 你可能想切换到支持参数化查询的mySQL库,例如{{ 3}}。这些可以完全消除注入的危险,因为它们会自动处理传入的数据。

如果您坚持mysql_*功能,请确保使用PDO 逃离所有传入任何数据,确保它们插入一对单引号。

答案 1 :(得分:4)

只要您的查询不使用参数,SQL注入就不存在风险。 只有当用户(或其他来源)可以影响在SQL中发送到数据库的任何内容时,才会发生SQL注入,例如搜索词

答案 2 :(得分:2)

这里没有安全问题。在您从用户那里获得输入并在查询中使用它时,可能会发生SQL注入。

答案 3 :(得分:2)

如果gallery表包含一些用户输入,则可能会进行一些XSS攻击。为防止这种情况,必须先使用htmlspecialchars()函数准备所有不受信任的用户输入,然后再打印到浏览器。

答案 4 :(得分:1)

此代码段是安全的,因为查询中没有用户提供的输入。

如果您有userinput,例如通过获取应从URL或POST显示的类别,您应该使用预准备语句。即使用户输入,这也许你是安全的。这比纯转义更安全,因为解析了sql然后插入了参数。这样做性能更好,用户输入无法更改sql查询的结构。

答案 5 :(得分:0)

假设连接代码在Web可访问的PHP脚本中,您可能想要考虑的唯一事情是:

  1. 将MySQL连接移出 脚本和到外面的文件 该网站的文档根

  2. 或使用外部源变量 (即来自外面的不同文件 的文件根目录) 用户名和密码代替 脚本中的硬编码细节

  3. 这样,如果服务器出于任何原因显示代码而不是呈现PHP,那么详细信息将从视图中保持安全