如何防止用户直接在URL中输入变量


How to prevent users from entering a variable directly into the URL?

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,但我不确定在中放什么

您无法控制某人将向您的服务器发送哪些请求。

您需要:

  1. 测试是否允许他们在执行请求之前提出请求(例如,有一个可接受的文件名列表,或者有这样的列表并将其与特定的用户名/密码组合关联)
  2. 对服务器上的值进行硬编码