2015-03-25 59 views
1

关于安全性;我是否应该检查每个页面中发送的变量的数量,发送的变量的大小以及如果在页面中不需要的情况下阻止GET,例如。PHP:滥用POST和GET

我的意思是也许有人发送非常大的文本很多次作为GET变量超载我的服务器。

可能吗?我能做些什么呢?

+0

你为什么使用'GET'发送大量数据? – 2015-03-25 12:20:00

+0

@Testing不,我很担心黑客 – omidh 2015-03-25 12:20:57

+1

,您应该考虑使用会话和IP地址以及流量来检查用户发送的呼叫的数量和类型。可能你可以控制数据的过载。但是你仍然需要考虑一些安全因素。 – 2015-03-25 12:27:25

回答

1

使用GET请求无法发送海量数据(Apache的默认值为8000个字符,check browser limitations here)。如果你没有使用$_GET参数的任何地方,那么它对服务器的影响就基本没有了。这里重要的是每秒请求数。普通用户不会产生大量的请求。
如果您正在寻找安全漏洞,请从上传的文件执行限制(like PHP code in image.jpg)和其他不安全的文件访问,XSS attacks,weak passwords generation等等开始。

+1

在OWASP的两篇文章中进行链接,以便OP引用您描述的攻击类型,并且您可以从我这里得到一个赞扬。 – 2015-03-25 13:01:57

+1

@ʰᵈˑ更新了资源链接 – Justinas 2015-03-25 13:09:39

1

我的回答你的问题有些链接到您的评论:

不,我很担心黑客


安全明智的,我认为你应该检查和优化的第一件事就是网站结构。你提到的问题非常具体,在一定程度上可能有所帮助,但可能不会是他们的主要攻击。

您可以在服务器配置中的某个地方始终限制GET请求(对于大多数服务器,默认情况下大约为8KB)。您也可以创建一个自定义的414,解释请求长度较短的原因。总而言之,如果您的目标是安全的话,我会从其他地方开始(更广泛的图片),然后慢慢解决我的方式,直到我达到核心。

1

POST/GET值在大多数语言中的处理方式存在很大问题,包括可能通过专门制作的请求导致DOS攻击的PHP。它首先在this talk中讨论过(幻灯片可用here)。

您还可以阅读关于它herehere。主要想法是POST/GET是数组,并且使用哈希表存储数组。攻击者可以通过有目的地创建冲突(数据具有相同的散列值)来创建DOS,这会导致大量计算。

但是这不是应该在应用程序级别处理的东西,所以作为PHP编码器的您不必担心它。上述问题是PHP处理哈希表的一个问题,但您也可以通过限制PHP配置中POST/GET请求的大小来防止它。

如果您担心DDoS,这也不必由您的应用程序代码来处理,而是从外部(例如防火墙)处理。