当前位置: 首页 > 面试题库 >

在哪里使用mysql_real_escape_string防止SQL注入?

饶曦之
2023-03-14
问题内容

我遇到了一群黑客。他们几次入侵了我客户的网站,我的客户更加生气:(我的客户丢失了他的数据库(有数百条记录),不得不输入所有:(

现在,我将进行更多介绍。

  • 固定文件权限
  • 更改了ftp和主机登录信息
  • 清除所有远程mysql访问

现在正在处理SQL注入问题。我在管理面板登录参数中添加了mysql_real_escape_string。所以我还应该在哪里使用mysql_real_escape_string?我的网站上只有几封电子邮件表格,我认为我不需要在此添加…

我有一个index.php作为主页。我应该为此页面做些什么,以防止通过url like进行任何sql注入攻击index.php?somesql=吗?

请给我提意见!我非常感谢!!!:(

例如:

我有这样的代码

public function showDetails($id) {

    // SQL Jobs Details
    $this->sql_job = "SELECT * FROM jobs WHERE id=".mysql_real_escape_string($id);
    $this->rst_job = mysql_query($this->sql_job);           
    $this->row_all = mysql_fetch_assoc($this->rst_job);

    // SQL State
    $this->sql_state = "SELECT title FROM state WHERE id=" . $this->row_all[$this->tbl_jobs['f4']];
    $this->rst_state = mysql_query($this->sql_state);   
    $this->row_state = mysql_fetch_assoc($this->rst_state);
........

将mysql_real_escape_string用于$ id是否足够?不用于$ this-> row_all [$ this-> tbl_jobs
[‘f4’]]


问题答案:

基本上,每次您在SQL查询中使用一些不安全的数据(用户输入,来自数据库,文件或外部网站的值,即,您不能 100%
确定安全的任何数据)时,都应使用mysql_real_escape_string。请注意,根据OWASP,此功能对于转义动态表名称并不安全(但这远比“基本”用户输入插入少见)。

我建议您阅读有关SQL注入的整个OWASP文章,并浏览网站的其余部分。它是有关Web应用程序安全性的重要信息来源。

IMO,防止SQL注入的首选方法是使用准备好的语句。

请记住,如果您选择使用mysql_real_escape_string()它,则仅在用引号分隔的字符串中使用时才起作用。切勿在任何未引用的值上使用它。这包括数值;而是验证用户输入实际上是数字。



 类似资料:
  • 问题内容: 在http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat- sheet/?akst_action=share- this上 ,有一节声称您可以使用某些亚洲字符编码绕过mysql_real_escape_string 用BIG5或GBK绕过mysql_real_escape_string() “注入线” に关する追加情

  • 问题内容: 我有一个现有的代码,其中应用程序根据很多条件生成不同的sql并通过hibernate会话createSQLQuery()执行它们。在这里,这些参数与作为普通字符串替换驻留在java类中的sql字符串相连接。现在的问题是,我需要防止sql注入。因此,为此,我必须使用getNamedQuery()并绑定参数,以便hibernate将处理特殊字符。但是问题在于将字符串sql的字符串移动到xm

  • 所谓 SQL 注入,就是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令。具体来说,它是利用现有应用程序,将(恶意)的 SQL 命令注入到后台数据库引擎执行的能力,它可以通过在 Web 表单中输入(恶意)SQL 语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行 SQL 语句。比如先前的很多影视网站泄露 VI

  • 我正在尝试验证注释框的输入,以便只接受文本,并在用户输入数字(1-0)或符号(@\$%)时提醒消息^ 有没有办法在html中做到这一点

  • 问题内容: 即使使用函数,是否存在SQL注入的可能性? 考虑这种示例情况。SQL是用PHP构造的,如下所示: 我听到很多人对我说,这样的代码仍然很危险,即使使用了函数也可能被黑。但是我想不出任何可能的利用方式? 像这样的经典注射: 不工作。 您是否知道上面的PHP代码会进行任何可能的注入? 问题答案: 考虑以下查询: 不会保护您免受此侵害。 您可以在查询中的变量周围使用单引号()来防止这种情况。以

  • 问题内容: 是否有可能以与PHP具有防止它们攻击的Prepared语句相同的方式来防止在Node.js(最好是使用模块)中进行SQL注入。 如果是这样,怎么办?如果没有, 那么有哪些示例 可以绕过我提供的代码(请参见下文)。 一些上下文: 我正在使用node-mysql模块制作一个包含Node.js+MySql的后端堆栈的Web应用程序。从可用性的角度来看,该模块很棒,但是它还没有实现类似于PHP