我应该尽可能地将URL隐藏到脚本中吗?

时间:2013-01-07 18:02:56

标签: php html url

我对php很新,我想知道该怎么做。

对于我网站上的几个功能,我有一个PHP脚本,用于在用户点击某些内容后处理操作。即:

<a href='/php/delete.php?id=xxx'>delete</a>

<form action='/php/handleregistration.php' method='post'></form>

在我的代码中,当您查看源代码时,这些链接很容易看到,但是查看其他网站的代码,这些引用很难找到。我想大多数是由相同类型的PHP脚本处理,但通过一些javascript / jQuery。

所以,我的问题是,我应该这样做吗?为什么以及最好的方法是什么?

4 个答案:

答案 0 :(得分:3)

没有。 URI是公共信息。必须将它们发送到浏览器以便浏览器向他们发出请求。如果浏览器获得一些信息,用户也会得到它。当您需要调试时,混淆URI会让您的生活更加艰难。

OTOH,你应该做的是:

  1. 在让某人编辑数据之前执行身份验证/授权(包括“是否用户允许删除事情?”等测试。)。
  2. 对于更改服务器上的数据的请求(如删除内容)使用POST请求(不是链接)

答案 1 :(得分:2)

我不相信你需要担心。您应始终编写安全代码,并在对数据执行任何操作之前对其进行验证和清理。 I.E:不要假设id = xxx有效,因为有人可以手动输入知道脚本URL的内容。

您看到的大多数网站可能正在使用框架或某种网址重写。这使得URL看起来更好(甚至是脚本)。尽管如此,它并没有增加安全性,这可以被认为是通过Obscurity实现的安全性。它只会阻止那些不知道自己正在做什么的人从轻松的攻击。它永远不会阻止熟练的攻击者,这就是为什么安全应该在服务器端实现的原因。

编辑:

作为旁注,您可能希望使用POST进行删除,以防止出现一些令人讨厌的不可预见的后果。正如蒂姆所说,你应该有一个删除确认页面,因为即使用户已登录,也不意味着他们处于控制之中。

想象一个iframe设置为width = 0且height = 0 src = http://yoursite.com/php/delete.php?id = xxx

的网站

这会导致登录用户删除其帐户。 (或者在他们不知情的情况下更改密码,收取信用卡等)。

当然,将GET更改为POST并不能完全解决这个问题,但它可以帮助保护Web应用程序。

答案 2 :(得分:1)

始终在服务器上强制执行安全性。最终,在客户端(Web浏览器)上完成的工作很少。

但是,您可能希望(强烈建议这样做)使用不同的HTTP方法(如GET,POST,PUT和DELETE)来更好地表示操作。这可能会略微影响您的标记/ JavaScript,例如将删除按钮放在表单中,以便您可以使用HTTP DELETE方法。

请参阅http://en.wikipedia.org/wiki/Representational_state_transfer

答案 3 :(得分:1)

没有区别。任何人都可以查看浏览器开发工具的“网络”选项卡,并查看发送到您服务器的内容。

无论您的代码有多混淆,客户端都没有安全保障。

相反,验证服务器上的所有内容。