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"中包含的所有内容,并将其显示在文本区域中。简而言之,变量"file"中的任何内容都将显示在文本区域中。
这个问题是,任何人都可以从URL中将"one.html"重命名为类似"do.php"的内容,所以现在"dophp"中的内容将显示在文本区域,这意味着任何人都能查看该文件的php代码。
如何防止用户在URL中输入变量,或在URL中键入任何PHP文件名?
我相信我可以使用htaccess,但我不确定在中放什么
您无法控制某人将向您的服务器发送哪些请求。
您需要:
- 测试是否允许他们在执行请求之前提出请求(例如,有一个可接受的文件名列表,或者有这样的列表并将其与特定的用户名/密码组合关联)或
- 对服务器上的值进行硬编码