| 
	 | 
|   | 
            Terms of Agreement:    
	 By using this article, you agree to the following terms...    
	 1) You may use 
	 this article in your own programs (and may compile it into a program and distribute it in compiled format for languages that allow it) freely and with no charge.    
	 2) You MAY NOT redistribute this article (for example to a web site) without written permission from the original author. Failure to do so is a violation of copyright laws.    
	 3) You may link to this article from another website, but ONLY if it is not wrapped in a frame.  
	 4) You will abide by any additional copyright restrictions which the author may have placed in the article or article's description.   |  |     
    An Important Note About .inc Files
     This is just a quick note about using include files with the ".inc" file extension. This doesn't apply to JUST PHP, but the web in general. I am posting this here in the PHP section because that is the server side language that I use, and I have noticed an abundance of ".inc" files in various projects throughout PSC. 
    For those who don't know, ".inc" files are nothing more than a file that generally contains information that you would need to access from various scripts on a site. Most often, they are a time saving way of storing certain variables. A primary example is Login/Passwords for database connections. This way, if you change the login/pass for the database, you only need to update one file. 
    The problem is, however, that the contents of ".inc" can be viewed in a browser by simply typing in the path. So anyone who knew the path of your include file could easily find out information that you probably didn't want them to know. Now, to those who aren't all that concerned with security, this may not seem a big issue. However, for the more paranoid among us, it is an issue. 
    I'm not sure if this applies to all platforms. The server I use runs Apache on Slackware, and the SysOp is a pretty security conscious person. Also, it could vary well be just an IE6 thing, as I have not had a chance to test this in any other browser. However, I thought I would make the uninformed among you aware of this. 
    The best way to get around this is to simply change the file extension to ".php" (or whatever language your using). It's that easy. Don't let your information be compromised. 
     |    | 
   Other 4 submission(s) by this author
  | 
   |   
|   | 
| Report Bad Submission | 
   | 
 |   | 
| Your Vote! | 
| 
See Voting Log  | 
|   | 
| Other User Comments | 
10/10/2002 1:12:16 AM:Dustin R Davis I never use .inc extention, you can get 
the same result with php extention. or 
asp for that matter or whatever else. 
Personally i would think this should be 
common sense among web developers. But, 
i guess most of PSC coders are "coding 
for fun" and not for proffesional 
status. I my self am a web developer 
and that is my job, so I am a little 
cautios about what i do. good point to 
bring up though.  
  | 
10/10/2002 2:40:55 AM:Darryl Porter Yes, this is something that a lot of 
people do and is not address. This is a 
huge security risk. Thanks for putting 
it out there. You can see the .inc file 
using any browser on any system--Don't 
take my word on this, but I've never 
had a problem acessing one if I knew 
the path to it.  
  | 
10/10/2002 8:40:17 AM: you can also configure the server to 
parse inc files instead.(just like asp 
and php pages) This is a common 
security setting.   
  | 
10/10/2002 3:02:45 PM:Charles  Chadwick I agree with you completely, Dustin. A 
lot of people are just coding for fun, 
which is fine, but they should be aware 
none the less. After all, I started out 
coding for fun, and it turned into an 
occupation.  
  | 
10/10/2002 3:12:31 PM:Rob t.H. I agree with you all, I just call those 
functions foobar.inc.php. And if I can 
I place files with passwords out of my 
webroot so they can't be accessed using 
a web browser. Another tip is to 
surround your script with <!-- script 
--> to make the code invisible in the 
browser in case of an PHP crash  
  | 
10/11/2002 11:20:08 AM: asd  
  | 
10/11/2002 11:23:23 AM: Same here! Had to keep the files with 
passwords too! Found out that anybody 
can dl the php files just by creatin a 
dummy html file(even in their HDs) with 
a link to the php file, when clicked 
the browser will show the open or save 
dialog box...  
  | 
10/11/2002 5:24:50 PM: .inc files are so risky. 'cause is some 
easily can read what content a .inc 
file.!!! i am using .php or .inc.php 
everytime.. i have get a site's some 
password that needed for something ... 
:)  
  | 
10/12/2002 5:31:32 AM:Merlin Corey ...  then again, password and such 
should be saved in a database of some 
kind (such as mySQL) anyway...  If you 
have a file extension that you use that 
isn't being interpreted, you should add 
it as the one person said...  Any file 
on any website that does not have a 
pre-set interpreter is viewable by any 
website as plain text (yes, even   
  | 
10/12/2002 5:33:28 AM:Merlin Corey [continuing] yes, even ".bla" files)... 
 However, the ".inc" file is not really 
that insecure - it is "security through 
obscurity"...  No one should know the 
full filename anyway (this doesn't 
apply if you have apache set to display 
directory contents when no index is 
found)...  Downloading an interpreted 
file through HTTP does *not* give you 
the uninterpreted version...  
  | 
10/12/2002 5:34:36 AM:Merlin Corey "viewable by any website" = "viewable 
by any webbrowser"  
  | 
10/12/2002 11:55:38 AM: I kindda do it from the other way 
round, ie, "inc.config.php" and inside 
that, have a bit of code, where if a 
cirtain var does'nt exist, it'll echo 
something loads of times. So, when 
including, it'll be something 
like
<?  require 
"inc.config.php?There_is_no_way_in_the_w
orld_ill_use_this_var=123654789"; 
?>
and if it's missing, then all 
you'll get is spam.  
  | 
10/14/2002 3:18:58 AM:magikh0e You could also put the .inc outside of 
the webserver path.. Or if using 
apapche make a .htaccess for the dir 
they are in  
  | 
10/14/2002 10:54:05 AM:VPUCEO Since I have my server configured to 
interpret '.inc' as PHP, i put this 
code at the top of every 
include:
if(eregi(  
  | 
10/14/2002 10:55:44 AM:VPUCEO Since I have my server configured to 
interpret '.inc' as PHP, i put this 
code at the top of every 
include:
if(eregi([INC FILE 
NAME],$REQUEST_URI)) { 
die();
}
With this code, you can 
include it but you can't access it 
directly.  Since the user is accessing 
the include thru another page, it 
doesn't trigger the above code. it only 
triggers if the user tries to open the 
INC file directly. 
Hope this helps  
  | 
10/14/2002 1:04:35 PM:Martin C. Conniffe It's about time someone aside from me 
noticed that :) I have for a while now 
found a way around it by doing two 
things. On MY sites, I have a dir 
called srv outside the public_html dir 
so noone outside the server can access 
it, and for my users who may not care 
as much, I have my apache setup to not 
allow anyone to get .inc files (so if a 
user _wants_ to make an inc file 
available to the general public, they 
have to call it .inc.txt). I never 
considered changing them to .php but 
that does work just as well :)  
  | 
10/14/2002 1:44:33 PM:TheGeek So what if I do all this, but I don't 
have access to the server root (Apache 
running on a Linux server)? I can't 
really stick my .inc files in 
/usr/dude. I tried creating a dummy 
folder named similar to the cgi_bin 
dir.... The apache config didn't like 
this. Any ideas on using .htaccess? 
I've never researched it.... thnx  
  | 
10/23/2002 3:46:51 PM:Tommy I use .inc files all the time, many of 
which do store very sensitive 
data.
I've gotten around the 
security issue by creating a folder, 
"inc", and placing the files there. 
Inside that folder, there's a file, 
.htaccess, which contains solely the 
line "deny from all". This allow 
scripts to access the files, but not 
visitors.
Enjoy!  
  | 
10/24/2002 3:35:23 PM: I am running IIS5 and have the same 
issue. I have got around it though by 
putting the files in a seperate "INC" 
directory and removing permission to 
the IUSR & IWAM (IIS anonymous 
accounts)... apparently IIS uses the 
System account to read the files.  
  | 
10/24/2002 6:07:50 PM: or deny listings for an /inc directory 
so if someone does try to view the 
files, they cannot get to the 
directory..  You can do this with 
apache..  
  | 
10/26/2002 3:02:07 PM: Maybe you should try some Exploiters on 
your sites.  
  | 
10/28/2002 5:29:03 AM:
 
  Oh please thats not a security risk if 
dick wads configure their .htaccess 
properly they can restrict access to 
all *.inc files making it impossible 
for people to view them.   
  | 
10/28/2002 5:08:21 PM:galantz Yeah, well there's a lot of "d#ck 
w#ds", goto your favorite search engine 
and search for "ODBC conn.inc", you 
will literally see hundreds of hits.  
For several years, I would make money 
by finding people with database 
connections to their databases that 
contain private information (yes 
sometimes customer credit card numbers) 
and would contact their IT for 
consulation fees... I think I cleared 
nearly 20,000USD with this "oversite" 
of "d#ck w#ds" so instead of "bitching" 
learn to milk it!!! :-)  
  | 
11/1/2002 10:19:40 AM:James Mistry There is one problem though - you can 
use leeching software like GoZilla 
(yes, I know it's a download manager as 
well) to download PHP files.  
  | 
 | 
    |   Add Your Feedback! |   
    Note:Not only will your feedback be posted, but an email will be sent to the code's author in your name.
  NOTICE: The author of this article has been kind enough to share it with you.  If you have a criticism, please state it politely or it will be deleted.
  For feedback not related to this particular article, please click here.     |   
   |