在PHP中是否可以检查谁正在进入您的网站。我有一个Web应用程序(用PHP编写),应仅允许从某些特定网站进入的用户。可以通过检查 _Request
对象来获取引荐网站吗?如果可以,如何获取?
是的,但请记住,一些代理和其它工具会剥离这些信息,而且它们可以很容易地被伪造。因此,永远不要依赖它。例如,不要认为通过检查引用者与您自己的服务器匹配来保护您的 Web 应用程序免受 CSRF 的攻击。
$referringSite = $_SERVER[ HTTP_REFERER ]; // is that spelt wrong in PHP ?
如果你想只允许特定域名的请求,你需要解析一部分URL来获取顶级域。随着我的学习,我发现可以使用PHP的parse_url()来完成这个任务。
As andyk points out in the comments, you will also have to allow for www.example.com and example.com.
虽然您可以查看 $_SERVER [ HTTP_REFERER ]
来获取引用站点,但不要指望它。浏览器设置了此标头,易于伪造。
If it s critical that only people coming from specific referrers view your site, don t use this method. You ll have to find another way, like basic auth, to protect your content. I m not saying that you shouldn t use this technique, just keep in mind that it s not fool-proof.
顺便提一下,您也可以使用mod_rewrite在apache层面上阻止引荐者,详情请见这里。
您不能信任引荐人。尽管来自$_SERVER
数组,但实际上是用户/浏览器提供的值,很容易被伪造,使用像Firefox的 RefControl插件这样的东西。
You need to examine the $_SERVER array for the HTTP_REFERER key.
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding