两个长度限制问题的分析(来源于项目)

原创 2004年10月29日 16:40:00

一、问题起因

在某项目释放后Bug统计的附件《释放后问题》里有:   

问题
原因
分析
备注

CSV处理时,如果处理的主题数过多,发生URL参数上限的错误;<?xml:namespace prefix = u1 />

可变长度的参数通过URL方式传递,会造成这种潜在的错误发生。

1、属于2次发生问题,开发方面没有及时通过checklist等方式向组员传达相关注意事项;
2、测试时没有作大批量数据的测试;

1、作为经验添加至CheckList中,加强组内共享、检查的效果;
2、加强测试点是否完备的检查,重点关注对开发方面共性问题的测试;

通过对模块原有GUI状况确认,进行CSV输出时,输出结果很大的场合,CSV文件的内容不能输出

没有考虑到POST数据量存在128K的大小限制。

这属于新问题,以前从未遇见过,也没有进行过大规模的数据量测试

已将此类检查列出CheckList

做为一种经验积累,这些问题、原因及解决办法将被列入Checklist,那么:

第一个问题:URL参数上限的提法准确吗?上限是多少?

第二个问题:为什么POST时数据有限制?限制是128K吗?  

二、问题分析

1、第一个:

1)URL不存在参数上限的说法。该问题实际是IE对URL有长度限制的问题。

2)HTTP协议规范也没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。[参1]

3)“可变长度的参数通过URL方式传递”实际是说提交表单时使用了GET方法,而不是POST方法。造成这种潜在错误的是使用GET方法提交表单数据。因为GET方法将数据放在URL里传递给服务器处理。

4)注意这个限制是整个URL长度,而不仅仅是你的参数值数据长度。

5)既然是IE对URL长度的限制,那么不管是GET方法还是POST方法都存在这个限制。

(关于FORM的GET和POST方法具体内容请参考相关资料[参2])  

建议:

1)了解应用程序所在的环境,如Web应用的浏览器、服务器环境,了解其特定的参数限制情况。

2)提交复杂数据尽量使用POST方法。注意FORM不写method属性时默认是使用GET方法。

结论(写入Checklist):

对使用GET方法提交数据时,在IE环境下,需要考虑URL长度2083字节的限制。 

2、第二个:

1)理论上讲,POST是没有大小限制的。HTTP协议规范也没有进行大小限制。

2)“POST数据量存在128K的大小限制”不够准确,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。

3)对于ASP程序,Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。对于需要处理超过100K表单域数据的解决办法,请参考后面的[参3]。

4)由这个延伸出去,对于IIS 6.0,微软出于安全考虑,加大了限制[参4]。我们还需要注意:

    IIS 6.0默认ASP POST数据量最大为200KB,每个表单域限制是100KB。

    IIS 6.0默认上传文件的最大大小是4MB。

    IIS 6.0默认最大请求头是16KB。

    IIS 6.0之前没有这些限制。

建议:

1)弄清楚运行环境的默认设定值有助于你的设计及对出现的问题做快速的解决。

2)应该考虑服务器版本。各个版本的IIS对这些参数的默认设定都不一样,有必要的话,找资料整理出一份对照表。这样开发与测试时都有个参考。

3)IIS 6.0的这些限制实际只是它的默认设定值而已,实际应用环境你可以修改它们。

    在WINNT/system32/inetsrv/MetaBase.xml里默认定义了:
        AspBufferingLimit="4194304"           对应于上传文件最大大小
        AspMaxRequestEntityAllowed="204800"
   对应于POST最大数据量

        ...

 

结论(写入Checklist):

使用ASP时,需要考虑POST表单每个域一般读取处理时有100KB的限制。充分考虑是否使用Request.Binary。 

参考资料:

1Maximum URL Length Is 2,083 Characters in Internet Explorer 

2Hypertext Transfer Protocol--HTTP/1.1

3、PRB: Error "Request Object, ASP 0107 (0x80004005)" When You Post a Form

4、IIS 6.0 Troubleshooting [Client Requests Error-out or Time-out一节]

XSS绕过长度限制的两个Tips

0x00 使用outerHTML利用了outerHTML和URL(这里的URL是document.URL),将要执行的JS放在url中,从而突破长度限制。使用document.URL构造XSS执行JS...
  • u011721501
  • u011721501
  • 2015年09月13日 19:21
  • 1846

xss突破长度限制的搜集

通过name属性传值啊 http://drops.wooyun.org/papers/512 (未完待续)
  • p656456564545
  • p656456564545
  • 2015年07月28日 13:34
  • 490

XSS插入绕过一些方式总结

0x00前言          我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射、存储、DOM这...
  • qq_29277155
  • qq_29277155
  • 2016年05月05日 10:11
  • 23731

关于如何寻找xss漏洞并绕过限制

谷歌搜索:inurl:'product.asp?BigClassName',大量存在xss漏洞; 在浏览网站时,URL存在汉字或百分号时是有可能存在的,这时候,我们在其url上写入:alert('xs...
  • Blood_Seeker
  • Blood_Seeker
  • 2015年12月22日 19:28
  • 1762

MySql中group_concat字符长度限制

修改已经运行半年的项目,实时从第三方获取数据,最近出现一个问题,排查了好久,才发现是group_concat长度限制的问题,默认是1024 (select GROUP_CONCAT(nd.record...
  • xuforeverlove
  • xuforeverlove
  • 2017年12月15日 15:36
  • 77

java加解密-密钥长度限制问题

java6能支持大部分的算法,但是受到出口限制,密钥长度不能满足需求。不过sun是通过权限文件local_poblicy.jar和US_export_policy.jar做了相应限制。我们可以在sun...
  • kongqz
  • kongqz
  • 2011年03月23日 22:05
  • 3628

XSS绕过

绕过XSS-Filter =======================利用 用户可以随心所欲地引入插入恶意脚本代码. =========================利用HTML标签属性值执行XS...
  • u011149977
  • u011149977
  • 2013年09月22日 22:27
  • 3223

XSS插入绕过一些方式总结

XSS插入绕过一些方式总结         我们友情进行XSS检查,偶然跳出个小弹窗,其中我们总结了一些平时可能用到的XSS插入方式,方便我们以后进行快速检查,也提供了一定的思路,其中XSS有反射、...
  • keepxp
  • keepxp
  • 2016年07月28日 13:20
  • 8137

Android EditText限制文字长度(中文算2字符,英文算1字符)

其实项目原本使用cocos2dx中的E
  • satanzw
  • satanzw
  • 2014年11月12日 22:06
  • 4063

表单Post&Get两个长度限制问题的分析

两个长度限制问题的分析(来源于项目) 一、问题起因在某项目释放后Bug统计的附件《释放后问题》里有:   问题  原因  分析  备注  CSV处理时,如果处理的主题数过多,发生URL参数上限的错误;...
  • jackpk
  • jackpk
  • 2010年04月13日 13:49
  • 508
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:两个长度限制问题的分析(来源于项目)
举报原因:
原因补充:

(最多只允许输入30个字)