允许window.location但阻止直接访问PHP文件

时间:2016-06-22 12:52:04

标签: php jquery apache security web

我有一个名为 script.php 的脚本文件,可以通过&#34; Window.location <从另一个名为 main.php 的php文件访问/强>&#34;命令。我想阻止直接访问文件,即,没有人可以在URL栏中键入script.php并查看文件的内容。但我希望我的main.php能够使用window.location重定向到script.php。有什么办法吗?

我尝试使用 Debug Backtrace preg_match(),但这些也阻止了main.php中的window.location。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我不确定你想做什么以及为什么要做。没有办法只允许脚本打开URL,因为浏览器会处理它。

通常,您应该检查文件本身,如果允许用户使用它们。因此,您必须为您找到一个逻辑,如何告诉您脚本,用户是否应该看到它。否则,您可以执行其他操作,例如显示错误或将其重定向回给您main.php

只是一些简单的想法......

创意1。)如果可能,您可以include() script.php main.php中的.htaccess并阻止通过main.php直接访问。然后,您不需要重定向,也没有人可以直接访问它。

创意2。)$_SESSION["allow"] = true;中设置会话变量,例如script.php,然后在false中再次检查。然后将值设置为script.php?allow=true,以便下一次调用失败。

创意3。)在文件调用中添加参数,例如time()。但在这种情况下,所有知道参数的用户都可以调用它。

创意4。)向重定向添加自定义参数,该参数仅在给定时间内有效。简单来说,就像php main.php之类的东西。检查参数是否在短时间限制内。但在这种情况下,必须在var collection = { "2548": { "album": "Slippery When Wet", "artist": "Bon Jovi", tracks: [ "Let It Rock", "You Give Love a Bad Name" ] }, "2468": { "album": "1999", "artist": "Prince", "tracks": [ "1999", "Little Red Corvette" ] }, "1245": { "artist": "Robert Palmer", "tracks": [ ] }, "5439": { "album": "ABBA Gold" } }; var collectionCopy = JSON.parse(JSON.stringify(collection)); function updateRecords(id, prop, value) { if (!value) delete collection[id][prop]; if (!!value && prop === 'tracks'){ collection[id][prop] = []; // Solve my problem collection[id][prop].push(value); } if (!!value && prop === 'artist') collection[id][prop] = value; return collection; } updateRecords(5439, "tracks", "Take a Chance on Me"); 文件启动重定向时生成重定向URL。否则请求可能已经过时了。

这就是我的想法。希望能给你一些提示如何做到这一点。