【发布时间】:2015-02-08 16:38:42
【问题描述】:
Index.html
<a href='" . $_SERVER['PHP_SELF'] . "?file=" . $file . "' id="okok">
<form action="do" method="post">
<textarea class="source"><?php if(!empty($thesource))echo $thesource; ?>
</textarea>
</form>
<script>
$("#okok").click(function(e) {
e.preventDefault();
var url = $(this).val("href");
$.get(url, function(data) {
$(".source").html(data); //or append }); });
</script>
基本上,这里发生的是当用户点击链接(a href="one.html")时,它会将“one.html”的内容显示到文本区域中。
一旦用户点击该链接,页面将刷新,URL 将重写为http://example.com?file=one.html。
由于“one.html”包含在变量“file”中,它将收集文件“one.html”中包含的所有内容并显示在textarea中。简而言之,变量 'file' 中的任何内容都会显示在 textarea 中。
这样做的问题是任何人都可以从 URL 中将“one.html”重命名为“do.php”,所以现在“do.php”中的内容将显示在文本区域中,这意味着任何人都可以查看该文件的 PHP 代码。
如何防止用户在 URL 中输入变量,或在 URL 中输入任何 PHP 文件名?
我相信我可以使用 htaccess,但我不知道该放什么
【问题讨论】:
-
不要将要包含的文件名放在 URL 中。它解决了这个问题并修复了您系统中的一个巨大安全漏洞。
标签: php .htaccess url url-rewriting