Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php URL变量安全吗_Php_Variables_Url - Fatal编程技术网

Php URL变量安全吗

Php URL变量安全吗,php,variables,url,Php,Variables,Url,传递URL变量安全吗?是的,我知道它们就在那个里的平原上,任何人都可以看到。。。。这不是SSN什么的。我不是说HTTPS项目,只是传递标题和电子邮件地址 例如,假设在一个网站的“关于我们”页面中,有一个员工列表。让我们以“吉米”为例。吉米有一张简历和照片,他的简历旁边有一个[联系吉米]按钮。如果有人点击[联系JIMMY],它会执行以下操作: <a href="contact.php?title=Jimmy&emailto=jimmy@mysite.com"> 在con

传递URL变量安全吗?是的,我知道它们就在那个里的平原上,任何人都可以看到。。。。这不是SSN什么的。我不是说HTTPS项目,只是传递标题和电子邮件地址

例如,假设在一个网站的“关于我们”页面中,有一个员工列表。让我们以“吉米”为例。吉米有一张简历和照片,他的简历旁边有一个[联系吉米]按钮。如果有人点击[联系JIMMY],它会执行以下操作:

<a href="contact.php?title=Jimmy&emailto=jimmy@mysite.com"> 

在contact.php中,我检查是否传递了变量,如果没有,则设置默认值:

<?php
// Checks to see if $emailto is empty, if so, it will send to this default email address
if (empty($_GET['emailto'])) {
    $_GET['emailto'] = 'info@mysite.com';
}
?>

<?php
// Checks to see if $title is empty, if so, will default the the selected title "US"
if (empty($_GET['title'])) {
    $_GET['title'] = 'Us';
}
?>


提交后,contact.php表单会在提交前剥离代码、检查有效性等。在这个黑客和垃圾邮件泛滥的时代,我仍然觉得把它们放在网址上是赤裸裸的。如果传递变量是一种可怕的、难以言表的方式,那么您对如何完成同样的事情有何想法?我不希望在联系人表单上有下拉列表供人们选择联系人,但我想这是一种选择。好啊仁慈点!;)

另一种在没有普通变量的情况下实现这一点的方法是使用HTML5中的
data-
属性,然后将其与jQuery.post结合使用,当然是使用jQuery

<a href="#" class="contact-user" data-user-email="jim@jimmy.com">Contact Jimmy!</a>

不过,为了回答您的问题,您所做的并不被认为是危险的,但是如果您没有正确处理变量,它可能会导致问题。攻击者可以很容易地传入危险代码,如果您没有正确地对其进行清理,您可能非常容易受到攻击。但是,这并不是您的情况所独有的。

使用Javascript而不是get通过post提交。发送此类数据比获取此类数据要好得多

function contact(title, to)
{
    var formdata = new FormData();
    formdata.append('emailto', to + '@mysite.com');
    formdata.append('title', title);
    var ajax = new XMLHttpRequest();
    ajax.open('post', 'contact.php', false);
    ajax.send(formdata);
}

@jeroen它不比任何其他实现更容易接受垃圾邮件;除非您要将CSRF应用于所有链接和表单等;这是不可行的,也不太可能发生,那么所有的请求都可能是垃圾邮件的原因。@Bowersbros你是对的,我的评论太宽泛了,没有针对这个问题。。。
function contact(title, to)
{
    var formdata = new FormData();
    formdata.append('emailto', to + '@mysite.com');
    formdata.append('title', title);
    var ajax = new XMLHttpRequest();
    ajax.open('post', 'contact.php', false);
    ajax.send(formdata);
}