发送$ _SERVER [' PHP_SELF'用jquery到外部php

时间:2014-08-22 09:52:47

标签: php jquery ajax

在页面中包含评论表格。 有了评论,我想写一个发布评论的mysql网址。

发布的对php文件的评论将与jquery一起发送,如$.post("_record_comments.php", data_to_send_ajax_post, function(result_of_record) {

要php文件想要发送当前url(url的一部分)

可以像这样创建jquery变量

var url = '<?php echo htmlspecialchars( $_SERVER['PHP_SELF'] , ENT_QUOTES, "UTF-8"); ?>'

var url = '<?php echo htmlspecialchars( $_SERVER['QUERY_STRING'] , ENT_QUOTES, "UTF-8"); ?>'

但据我所知,任何人都可以设置var url任何值,例如var url = 'wrong-url.html'。在这种情况下,我会将不正确的URL发送到php文件。

如何阻止用户更改var url的值并发送到当前页面的php正确网址?

1 个答案:

答案 0 :(得分:1)

为了防止随机脚本与您的脚本交互,请在您自己的范围内运行所有代码:

(function () {
    var url = "";
}());

现在url无法通过可能在全局范围内运行的任何其他内容访问。

请注意,这可以防止更改url变量,但仍然有很多方法可以让客户自己开枪并发送错误的请求,但他们为什么?如果存在安全问题,请确保首先在服务器上实现它们。

也许这值得一提:JavaScript安全模型依赖于所有代码安全运行的基础。您(和您的客户)负责页面上运行的代码。如果第三方也可以运行代码,那么您就遇到了问题。这就是为什么始终对输入进行编码非常重要的原因,如果攻击者可以注入HTML,则可以注入XSS脚本。


在JavaScript中编码变量的正确方法是使用json_encode

var url = <?php echo json_encode($_SERVER["PHP_SELF"]);?>;

htmlspecialchars是一个用于打印到HTML上下文的编码函数。