【问题标题】:Is It possible to make this MySql code non-injectable in any way? [duplicate]是否有可能以任何方式使这个 MySql 代码不可注入? [复制]
【发布时间】:2014-01-18 01:05:04
【问题描述】:

您好,感谢大家帮助我解决当前的问题,如果可以,您能否检查此代码是否也有任何漏洞?

  $sql="INSERT INTO  `paypal_mysqltable_name` (datenow,    item_name,   item_number,       payment_status,    payment_amount,   payment_currency,  payer_email,     payment_type,   custom, 
invoice, first_name, last_name, address_name, address_country, address_country_code, address_zip, address_state, address_city, address_street) 
            VALUES (CURRENT_TIMESTAMP,'item_name','$item_number','$payment_status', '$payment_amount','$payment_currency','$payer_email', '$payment_type','$custom' ,'$invoice','$first_name','$last_name','$address_name','$address_country','$address_country_code','$address_zip','$address_state','$address_city','$address_street')";
  $result=mysql_query($sql,$link);

大家好,对不起,我不太习惯 SQL 和 php,我已将我的 $link 转换为 MYSQLi,就像推荐的那样,但是我在将我提交的语句写入这种格式时遇到了问题。

    $stmt = $mysqli->prepare("

谁能帮忙

【问题讨论】:

  • 请使用PreparedStatement
  • 我该怎么做?
  • 为了防止 SQL 注入,请参阅 stackoverflow.com/questions/60174/… 然后,当 使用 数据时(例如以 HTML 格式输出),请确保使用正确的转义 - 但那是 不同的问题,所以不太清楚为什么“html”是一个标签。
  • @user3148173 您的所有问题都在链接的问题中得到解答。
  • 正如@user2864740 提到的,这个问题已经有了答案here

标签: php html mysql database mysqli


【解决方案1】:

首先,mysql_* 函数已被弃用。所以切换到 MySQLiPDO

来回答你的问题..

您似乎担心 SQL 注入问题,如果您使用 PreparedStatements,您可以很好地避免它们 (SQLi),因为转义是自动完成的。

【讨论】:

  • 似乎反对者讨厌 PreparedStatements 并希望坚持使用 mysql_* 功能。
【解决方案2】:

将此mysql-real-escape-string 用于字符串,将此intval 用于整数

为了更安全地使用这个PDO

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    相关资源
    最近更新 更多