如何使用 PHP 和 sqlsrv 驱动程序清理输入?

发布于 2024-12-07 07:33:16 字数 117 浏览 0 评论 0原文

我正在开发一个使用 sqlsrv 驱动程序的 PHP MSSQL 项目。 阻止 SQL 注入攻击的最佳方法是什么?我需要类似 mysql_real_escape_string() 的东西,但用于 sqlsrv 驱动程序。

I'm working on a PHP MSSQL project that is using the sqlsrv driver.
What's the best way to stop SQL injection attacks? I need something like mysql_real_escape_string() but for sqlsrv driver.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吻安 2024-12-14 07:33:16

如果你像这样使用它,引用是自动的:

$sql = "exec usp_cis_upd
        @key = ?,
        @value = ?";

$params = array(
    $key,
    trim($_POST["value"]));

$stmt = sqlsrv_query($dbh, $sql, $params);

If you use it like this, quoting is automatic:

$sql = "exec usp_cis_upd
        @key = ?,
        @value = ?";

$params = array(
    $key,
    trim($_POST["value"]));

$stmt = sqlsrv_query($dbh, $sql, $params);
无尽的现实 2024-12-14 07:33:16

最好的方法是不要编写 SQL,这样您就需要使用 mysql_real_escape_string() 的类似方法,您可以通过使用值的占位符然后传递变量来完成此操作(否则将被当您执行语句或打开游标或其他任何操作时,由 mysql_real_escape_string() 处理)。

如果失败,请查看 mysql_real_escape_string() 的输出;它可能也适用于 MS SQL Server。这取决于它如何进行转义(以及它做了什么转义)。

The best way is not to write your SQL so that you need to use an analogue of mysql_real_escape_string(), which you would do by using placeholders for the values and then passing the variables (that would otherwise have been handled by mysql_real_escape_string()) when you execute the statement or open the cursor or whatever.

Failing that, look at the output of mysql_real_escape_string(); it might be appropriate for MS SQL Server too. It depends on how it does the escaping (and what escaping it does).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文