将数据放入href安全吗?

时间:2011-08-30 08:30:39

标签: php web-crawler

我想在点击时将数据从一个php页面传递到另一个页面,并在填充链接页面时使用该数据。起初我打算用ajax来做这件事,但遇到了麻烦,然后意识到这就像把数据放在链接的href一样简单。

我的问题是,以这种方式将数据直接放在href中是否安全?我知道通过URL传递数据(最终会这样做)是安全的,但我听到某处(我无法回想起),将数据直接放在链接的href中可能会导致问题使用网络爬虫等。

这是真的吗?使用这种方法还有什么我应该担心的吗?或者,对于我来说,最好的方法是将每个链接独有的数据发送到另一个页面上吗?

PHP:

while($row = mysql_fetch_assoc($result_pag_data)) { 
    echo "<a target='_blank' href='secondary_imgs.php?imgId=".$row['imgId']."'></a>";
}

5 个答案:

答案 0 :(得分:1)

我认为如果你想显示一些数据是安全的,但是从不使用get方法来插入数据,特别是在sql方面要小心。永远不要使用get方法来修改sql,如果必须,首先验证参数。

也要小心post方法。总之,永远不要相信用户,你永远不会知道。

答案 1 :(得分:1)

看起来它是安全的,因为你“只”查询具有特定id的图像(这就是你所做的一切,对吧?)。只要问问自己是否

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

9.1.1安全方法

实施者应该意识到软件代表用户通过互联网进行交互,并且应该小心让用户了解他们可能采取的任何可能对他们自己或他人有意外意义的行为。

特别是,已经确定了GET和HEAD方法不具有采取除检索之外的动作的重要性的约定。这些方法应该被认为是“安全的”。

适用。

答案 2 :(得分:1)

既不通过URL传递数据,也不将其嵌入到href中是安全的。

  • 用户可以看到该数据,因此您无法保护用户的数据。
  • 用户可以修改该数据,因此您无法保护您的数据免受修改,并且您的脚本无法获取恶意或错误的参数。

因此,如果您正在设计将在友好环境中严格保护的系统 - 可以通过URL传递params(请注意,URL字符串限制为4096个字符)。如果不是 - 这取决于您想要的保护级别。

最简单的方法是使用POST个请求而不是GET。这样你就不会保护你的数据免受恶人的侵害,但普通用户将无法看到或修改它。无论如何,总是在服务器上验证输入是个好主意。

答案 3 :(得分:1)

网页抓取工具应该没有问题,因为他们只是按照链接。

但是存在一个潜在的安全问题,即恶意用户可以通过更改URL字符串来解决表中的任意行。根据链接指向的内容,这可能是也可能不是问题。

如果您需要将数据限制为特定用户,那么这不是一个好主意,否则,如果它适用于您,那么它简单明了,然后执行此操作。

答案 4 :(得分:0)

定义“安全”。

如果不知道威胁模型是什么,也不知道如何使用数据,就无法回答。

当然,GET和POST之间存在非常重要的差异(但请注意,POSTed for仍然可以通过操作URL发送GET变量)。

使用POST而不是GET发送数据同样危险。也不使用cookie。所有都可以在客户端进行修改。

如果您正在谈论CSRF,那么有很多方法可以防止这种情况发生 - 尝试使用Google作为初学者。