如何正确访问我的PHP文件?直接从JS或通过“;主“;PHP
How do I correctly access my PHP files? Directly from JS or a thru a "master" PHP?
我不确定我是否完全理解站点安全的这一方面,但似乎将PHP文件保留在根目录下是个坏主意,所以我们将它们移到一个PHP文件夹中,并将此文件夹称为phpIncludes。一些模糊的问题是:
1) 如何访问phpIncludes中的文件doStuff.php?从javascript?让我的javascript告诉敏感内容所在文件夹的名称似乎是个坏主意,如:
executeAjaxCall("phpFiles/doStuff.php",success,error);
2) 或者来自驻留在根上的"主"PHP?这不能因为是根目录而被篡改吗?
$secretVariableThatOnlyThisPHPWouldKnow="bla"; //then check it in the included file? Does that work?
//in JS
executeAjaxCall("masterFile.php?fileNeeded=doStuff");
//in PHP
$secretVar="bla";
include("myPathString/phpIncludes/".$_GET['fileNeeded'].".php");
//in all other INCLUDEable PHP files
if (!isset($secretVar))
{
die();
}
if (!isFromThisDomain)
{
die();
}
(如何执行上次测试?)
我的想法是:"如果有人想把PHP文件放在phpIncludes文件夹中,他们不能,但他们可以通过HTML访问它们,所以请求需要验证。如果没有会话,比如在master.PHP中生成doStuff.PHP可以识别的东西,从而完成它的工作,这很容易实现吗?还是会话是最好的方法?"事实上,我想知道"无会话"的情况,因为这让我摆脱了试图实现反会话劫持代码的任务(如果我学会了……)。另一方面,我也在想:"变量secretVar是可访问/可篡改的吗?因为它将在根上?"
3) 按(2)操作,但在另一个文件夹中有master.php(让我们称之为"master"),使其成为非root?在这种情况下,我是否使用getcwd()+字符串操作从主文件夹访问phpIncludes文件夹?还是有一种"更优雅"(更懒…)的方法?
3似乎很神奇,我在root上的唯一文件是index.php,它只是启动HTML+JS,不做任何敏感的事情。还是我错过了什么?
你的PHP文件和文件夹结构是完全无关的。唯一重要的是:
当您访问特定的URL时会发生什么
phpFiles/doStuff.php
首先是URL。你如何访问它并不重要("直接"通过浏览器地址栏、AJAX、curl或其他任何方式);重要的是当访问该URL时会发生什么。这完全取决于你来确保每次访问URL都不会发生任何不希望发生的事情。
- 不要公开任何本来就不应该存在的URL。如果你有一堆php文件,它们不打算通过URL直接访问,那么就不要公开它们。这意味着您可以通过web服务器配置阻止对它们的访问(例如.htaccess文件中的
deny all
),也可以从公共webroot中删除这些文件 - 根据需要验证所有公开的URL端点中的所有输入和必要条件。用户需要登录才能执行某些操作?验证。您需要某些查询参数或POST正文数据吗?验证。在做任何事情之前,根据每个传入请求的优点对其进行验证。您是在每个文件中单独重复这个验证代码,还是在某个集中的地方重复,这取决于您自己
- 根据需要将代码拆分到多个文件中,以使其可重用。参见第1点。和2.,您只需注意哪些文件被公开为URL入口点,以及在什么时候需要进行什么样的验证
- 在SVG地图上添加水的渐变,就像在谷歌地图(PHP/JS)中一样
- PHP/JS-EchoJs函数PHP curl发布后的通知
- FullCalendar backend PHP/JS to symfony 3
- 什么'是一个用于PHP+JS(extJS)开发的IDE,支持ctrl+click
- PHP/JS 文本差异
- 一个页面上有两个引导 php-js 表单
- Piwik:如何跨域(PHP/JS)跟踪访问者(用户ID)
- 使用php-js-msyql的实时更新消息系统
- 使用PHP/JS自动刷新Highcharts
- 如何为PHP/JS游戏制作倒计时/定时器
- node.js可以选择性地引入到用普通PHP/js/CSS/HTML构建的web应用程序中吗
- 用PHP/JS开发依赖表单字段的最佳方法
- 无法从数字中删除空白(PHP/JS)
- PHP/JS:动态Dropboxes和回显SELECTED值
- 更改数据库值AJAX PHP JS
- '套接字连接错误'在Aptana 3上调试PHP/JS时
- PHP/JS:用JS函数发布输入值,并通过PHP进行回显
- 在“onexit”或“onsubmit”之后,查询mysql并填充表单字段,而无需离开页面php js
- "Share-to-Facebook" html / php / js
- 从 PHP-JS 返回数组的计算的读取值