我的网站上有一个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
。
答案 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脚本中,您可能想要考虑的唯一事情是:
将MySQL连接移出 脚本和到外面的文件 该网站的文档根
或使用外部源变量 (即来自外面的不同文件 的文件根目录) 用户名和密码代替 脚本中的硬编码细节
这样,如果服务器出于任何原因显示代码而不是呈现PHP,那么详细信息将从视图中保持安全