-1

我正在努力加强我的应用程序的安全性,我计划做的第一件事是通过 SSL 为整个应用程序提供服务。如果这是我为保护应用程序而采取的唯一措施,我想知道这有多安全。

例如,假设我有以下前端代码:

<input id="password" value="my_password_value" />
<script>
    $(document).ready(function(){
        $('#password').blur(function(){
            location.href = 'my_backend_script.php?password=' + $('#password').val();
        });
    });
</script>

然后在我的后端脚本中,我有:

$user_ID = 1;
$password = $_GET['password'];
$USER_edit = mysql_query("UPDATE USERS SET password='$password' WHERE id='$user_ID'");

如果上面的示例在 SSL 连接下运行,它会不会受到任何 SQL 注入攻击?

注意: 我意识到准备好的语句是防止注入攻击的标准,并且将实施最佳实践,但我只是对 SSL 作为独立解决方案的安全性感到好奇。

快速回答: 不,SSL对防止 SQL 注入攻击没有任何作用。

4

4 回答 4

4

SSL 只保护客户端和服务器之间的传输通道。但是客户端仍然可以通过该安全通道发送恶意数据。

于 2013-05-10T20:23:22.940 回答
4

不,不是。SQL 注入与连接的安全性无关,而与处理用户输入的安全性有关。使用准备好的语句有助于防止故意输入格式错误的数据破坏您的 SQL 查询。

如果您的所有用户都是必须登录的受信任用户,则使用 SSL 可以提供一定程度的安全性以防止 SQL 注入,因为您会更有信心进入您的应用程序的用户不会试图入侵您的系统。

但是 SSL 不能替代正确编写数据库访问代码。

于 2013-05-10T20:23:35.347 回答
2

SSL 根本不能防止 SQL 注入攻击。预处理语句、视图等是 SQL 注入的解决方案。

于 2013-05-10T20:23:38.473 回答
2

当我读到这篇文章时,我想到的问题是:注射是从哪里发生的?

是中间人注入流氓 SQL 还是登录用户?
使用 SSL 将确保(在相当程度上)MITM 不会将流氓数据(包括 SQL)偷偷带入我的数据包中。

那么,为什么这么多人说 SQL 注入与 SSL 完全无关?
在我看来,使用 SSL 可以在一定程度上解决许多攻击。

例如,考虑一个现有的应用程序,在该应用程序中应用 SQL 注入的真正解决方案之一是不可行的:比如说,准备好的语句,因为它会导致大量的代码流失。

您可以做些什么来轻松地为您的应用程序实现更好的安全性?
正如@JeffOlson 所提到的,如果您的用户需要登录并且登录后您信任他们,那么 SSL 是一个足够的解决方案(用于 SQL 注入和其他一些攻击)。

尽管您似乎已经同意 SSL 并没有完全解决每个应用程序的 SQL 注入问题。

于 2013-05-10T21:39:32.597 回答