Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据文档ID在网站中显示帖子_Php_Security - Fatal编程技术网

Php 根据文档ID在网站中显示帖子

Php 根据文档ID在网站中显示帖子,php,security,Php,Security,我正在创建一个php网站,其中有一个document.php,它基本上采用did文档ID并显示它。例如mysite.com/document.php?did=1,它使用类似SELECT*的查询从id=1的文档中获取数据库中的文档内容。我知道这种方法的安全性问题,比如SQL注入,我都做验证和转义,但有人告诉我,创建一个爬虫程序非常容易,它可以执行以下操作: for(int i = 0; i < 3000; ++i) DownloadPage("mysite.com/document.

我正在创建一个php网站,其中有一个document.php,它基本上采用did文档ID并显示它。例如mysite.com/document.php?did=1,它使用类似SELECT*的查询从id=1的文档中获取数据库中的文档内容。我知道这种方法的安全性问题,比如SQL注入,我都做验证和转义,但有人告诉我,创建一个爬虫程序非常容易,它可以执行以下操作:

for(int i = 0; i < 3000; ++i) 
   DownloadPage("mysite.com/document.php?did="+i);
现在我有两个问题

这真的是我写的代码的问题吗,还是有其他解决方案?例如,我知道我可以告诉Apache服务器限制一个IP的带宽使用。或者你提出了一个更好的选择。 如果这是一个问题,我心中有一个解决方案。我想我应该在页面中添加另一个参数。类似于内容的散列,它将根据DB进行检查,以查看这是否是正确的URL。 我经常看到的一件事是,有时标题的某些部分会附加到URL。大概是这样的:
mysite.com/document/1/some_part_____url,但我已检查,如果我删除标题并转到mysite.com/document/1,它仍将显示相同的网页。这让我觉得这不是出于安全原因,更像是一种帮助用户找到他要访问的页面标题的方法。

url的某些部分是为了在url中提供一定程度的人类可读性,以利于索引页面的网络爬虫,如谷歌机器人。。。更高的人类可读性会影响该页面在搜索结果中的权重。这不是出于安全原因

您可以指定一个哈希值,使其不是序列号,而不是将文档id指定为自动增量,但这会增加代码的复杂性。。。设置记录ID的自动增量非常有用


如果在脚本级别应用此功能,则最好在Web服务器级别限制此功能,而不是在脚本级别脚本仍然需要开始运行才能执行任何测试。通常将标题附加到URL的原因是为了搜索引擎优化

这些文件应该是安全的吗?如果是这样,您需要实现某种身份验证。模糊性带来的安全性,例如,用户不会猜测ID不是一个好方法。您可以非常轻松地实现用户名/密码,即使用户名/密码已烘焙到代码中,然后使用会话检查用户是否经过身份验证


如果文档没有安全保护,那么我认为没有必要担心身份验证。考虑到这样,您可以访问StAdppOrth.com /问题/ {ID}。

< P> >我不明白的是,这是如何成为安全问题的?

让某人使用爬虫,对你来说,它就像用户访问页面一样,对吗?那么这有什么不对呢

如果您想阻止或限制对它的访问,您可以使用php会话功能并控制它

如果你想阻止用户总是使用id,你应该通过你的逻辑来控制它,如果这样的会话用户被允许访问你的特定文档id,那么有很多逻辑方法来实现它。 请注意,大多数安全问题都可以通过严格检查预期输入而不是考虑大量解决方案来预防

现在,这是应用程序的代码部分


但安全不仅仅是这一点,错误配置的服务器、网络等也会给您带来问题。

如果没有其他问题,在URL中使用标题将有助于您进行SEO。没有人会在谷歌上搜索帖子1:所有页面的浏览者都可以使用文档,还是只有登录的用户才能使用文档?谢谢。这和所有其他答案都是我认为正确的。这就是我第一次问我的代码是否真的有问题的原因?!对于第一部分,在URL中添加部分标题,如何在php中实现?我非常感谢您的帮助。您想了解的是使用mod_rewrite的规范URL。谷歌一下,你会发现很多教程