遇到一个问题:对同一个网站需要登录的才能进入的页面进行访问,用socket拽下的源文件和从浏览器直接查看源文件获得的不一样?
几经思考,感觉可能是cookie 在做怪,在浏览器登录之后,浏览器应该把cookie向服务器提交了一次,
而直接通过URL访问该资源,由于并没有进行提交socket的操作,所以获得的应该是没有登录时候的网址,这样进行的一系列的sql注入点,跨站攻击点等的检测就会发生错误(想做一个检测网站注入点漏洞的程序)。
目前还没有解决,但是自己想了两个思路:
1 获取浏览器和服务器交互时的cookie,然后将该cookie 按照特定的格式发送给服务器,这样相当于已经登陆;
2 从登录页面获取提交用户名的密码的表单,然后直接向action目标直接提交,相当于一次模拟登陆;两种方法殊途同归,但是感觉好像都有不足:
1 cookie: 怎么获取cookie, 是从浏览器存放cookies的的文件中获取还是在浏览器和服务器交互时传递的过程中截取?还是Java中URLConnection有什么特殊的函数直接或的吗?不会。假如是加密的内容,那该咋办?????能获得用户名和密码吗?
2 用类似与post提交的方式直接提交,是不是需要知道一个用户和密码?在不知道的情况下,是不是需要进行post注入?如果这样的话,对于有验证码的登录表单是不是就没有效果了呢?不懂上网查了查,有Java模拟post表单提交的代码,但是总是在进行 属性 什么的,实在看不懂。好乱啊。
求各位大神指导。