如果一个网站使用了cookie,可通过注入HTTP表头的方式登录下面的表单
Username:
Password:
方法是注入一行新代码,如Set-Cookie,或使用SID,攻击例怎么做?又如何避免?
如果一个网站使用了cookie,可通过注入HTTP表头的方式登录下面的表单
Username:
Password:
方法是注入一行新代码,如Set-Cookie,或使用SID,攻击例怎么做?又如何避免?
首先,Http头注入发生的场景都是程序在HTTP头中使用了来自客户端发送的数据,比如在用户登录后,需要转向登录前的网址,如果使用Http头的Location:$url的话,就有可能发生HTTP头注入漏洞。
假如登录网页为login.php?url=http://xxxx/%0D%0ALocation:+http://hacker.com/ ,登录后如果直接转向URl里的url值的话,用户会被转向到http://hacker.com/ 因为url里包含%0D%0A,所以就会出现问题。因为http头都是以换行符分割的,一行一个。
当然,如果确实服务器端存在http头注入漏洞的话,那么%0D%0A后面也可以进行其它http头设置,比如set-cookie等等。
2.1. 不在http头中使用客户端数据,比如上例的跳转目的地址可以固定为某一页面。
2.2. 检查http头是否有换行符
1 回答1.6k 阅读✓ 已解决
1 回答1.1k 阅读
987 阅读
1 回答466 阅读
B/S架构的软件,安全原则第一条就是:
都要做数据验证,过去大伙儿可能更多地关注$GET, $_POST, $_REQUEST,事实上还要把$_COOKIE, $_SERVER["HTTP*"]也加入待验证的行列来。
验证规则黑白名单结合,白名单就是只允许出现你的业务事先约定好的数据格式(如用户名只允许数字字母,出现了标点符号啥的就验证不通过),黑名单就是不允许出现你事先规定不喜欢的字符(如用户名里不允许出现fuck、admin、root)
验证通过的数据,放入到一个数组里,后面的程序代码要用时,从这个数组取数据(而不从$_POST/$_GET/$_REQUEST等原始用户输入去取了),这样可以100%防注入。