如果我在QueryString中发送路径有什么安全问题吗?

时间:2016-06-20 11:37:32

标签: security http query-string

如果我在QueryString中发送路径,是否存在任何安全问题?比如发送此请求bmp2

4 个答案:

答案 0 :(得分:3)

如果文件系统无法从外部访问,则暴露路径的风险可以忽略不计。

特别是如果您正在讨论的组件的唯一目的是来显示服务器上存在的目录。您在查询字符串中看到的是您将在响应的有效负载中看到的内容,因此以纯文本形式显示路径就可以了。

当这个“TreeViewer”暴露敏感文件并允许用户浏览到任意位置,使他们能够检索存储在文件中的密码时,会出现问题。

当然,添加HTTPS永远不会伤害,但这只会阻止中间人找出该服务器上存在哪些目录和文件,并且不提供额外的安全性。

HTTPS不会使您的不正确安全的应用程序安全,您仍然需要实施身份验证和授权,输入卫生设施等。

答案 1 :(得分:3)

考虑到QueryString的安全性,你应该记住(读作"担心")以下时刻:

  • 网址存储在网络服务器日志中
  • 网址存储在浏览器历史记录中
  • 网址在Referrer标头中传递

您可以在SO上找到有关此阅读How secure are query strings over HTTPS文章和Is an HTTPS query string secure?问题的详细信息。

答案 2 :(得分:2)

是的,你打开了Directory Traversal(DT)和Local File Inclusion(LFI)攻击。

两者之间的主要区别在于DT是只读的,用户可以访问Web服务器上的任何文件,前提是它们具有足够的权限。另一方面,LFI允许您在Web服务器上调用文件(例如PHP文件)而不是读取它。

例如,如果您的Web应用程序中存在SELECT "<?php system($_GET['cmd']); ?>" INTO OUTFILE C:/tmp/shell.php漏洞,则攻击者可能会将Web shell部署到您的系统中:

http://localhost/eCTDTreeViewer/Home/Index/?pathOnServer=C:/tmp/shell.php?cmd=echo "foo"

然后攻击者可以调用该文件:

movies.DistinctBy(m => String.Format({0}{1}{...},m.prop1,m.prop2,[]));

这是非常简短的,但它应该提供一个好主意,它有多危险。

答案 3 :(得分:-2)

如果你保持纯HTTP,是的。请求将通过网络以纯文本形式发送。不要混淆,POST请求与你的信息体内的信息是一样的。

确保安全的好方法是使用HTTPS。由于在交换之前完成了握手,因此整个请求将被加密(也将路径)发送到端点。