htaccess / htpasswd有多安全?

时间:2011-01-14 08:26:36

标签: php mysql apache

只有一两个受信任的人拥有密码。 htpasswd在public_html目录之外。受保护文件夹中的脚本包含未清理的输入。没有密码,SQL注入是否可行?

8 个答案:

答案 0 :(得分:6)

  

SQL注入是否可行,没有密码?

假设您的.htaccess和.htpasswd实际上正在为您的用户名和密码设置屏幕,那么它是安全的。如果用户名和密码的组合无效,Apache将返回HTTP 403:Forbidden标头,这意味着该请求从未传递给PHP。这意味着如果没有有效的用户名和密码,就无法执行泄漏的脚本。

  

受保护文件夹中的脚本包含未清理的输入。

我认为您应该考虑对输入进行消毒,无论是否保护页面。

答案 1 :(得分:4)

无论设置如何,您始终始终始终处理数据,就好像它会随时跳出显示器而SQL注入您的心中。你不会问在x,y和z情况下是否可能,你总是认为它是默认的。

它甚至不需要是恶意的,如果处理不当,任何包含引号的用户输入都会弄乱您的查询,因此无论如何都需要转义输入。

答案 2 :(得分:2)

只是消毒那些投入。我是认真的。一个系统与其最薄弱的环节一样强大;即使你信任那些你提供访问权限的人,也总会有其他人可以用来解决这个问题的攻击。一些可能性:

  • 社会工程(这里的可能性无穷无尽)
  • 网络嗅探(特别是在没有SSL的情况下提供网站时)
  • 受信任用户的浏览器或操作系统中的漏洞
  • 弱密码
  • 已损坏的网络服务器(如果有人设法删除.htaccess文件,则全部丢失)
  • 网络钓鱼
  • DNS欺骗

答案 3 :(得分:2)

在htpasswd上无法进行SQL注入,但还有其他漏洞。你已经覆盖了一个将文件放在Web根目录之外,但你也应该通过将这个页面添加到你的htaccess来防止apache服务这些页面:

<Files ~ "^\.ht"> Order allow,deny Deny from all </Files>

答案 4 :(得分:1)

SQL注入是不可能的,因为没有密码的攻击者无法在第一时间通过Apache。

但是,HTTP Basic Auth会受到中间人攻击,因为密码很容易被截获(如果是公共网站,您可能需要使用HTTPS)。

答案 5 :(得分:1)

如果设置正确,我认为没有办法绕过受密码保护的目录。

使用基本身份验证时,密码以明文形式提交,因此如果您不使用https,并且您的人员正在使用代理,则可以在那里获取密码。用户还可以在其浏览器中保存密码。

答案 6 :(得分:0)

SQL注入流程仍然只是受用户名/密码墙的保护。

您必须记住,如果您不使用SSL,密码/用户名将在网络上以明文形式传递。这意味着如果任何人可以嗅到该流量,他们将获得用户名/密码。

此外,这并不能保护您免受在您的应用程序上尝试SQL注入的合法用户的攻击。你必须记住,大多数攻击来自内部。

我会是你,我会把密码作为快速修复,但是当你有机会时修复SQL注入/输入卫生问题。

答案 7 :(得分:0)

.htaccess不会让您免于注射。

想象一下,当您的一个受信任的人在他的PC上感染病毒时。病毒窃取他的密码并将其交给黑客。黑客通过SQL注入登录并删除数据库。

即使没有发生这种情况,也总是逃避查询,因此用户可以安全地在查询中使用“'”之类的字符。

SELECT `name` FROM `table` WHERE `name` = 'pub 'cosa blanca''; --SQL error