URL变量是否安全

时间:2014-10-24 15:22:39

标签: php variables url

传递URL变量是否安全?是的,我知道他们在普通网站上,任何人都可以抬头看看....它不是SSN或其他任何东西。我不是在谈论HTTPS项目,只是传递标题和电子邮件地址....

例如,让我们在网站的“关于我们”页面中说明,这是一份员工列表。让我们来看看吉米"例如。吉米有一个生物和图片,以及他的生物的[CONTACT JIMMY]按钮。如果有人点击[CONTACT 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';
}
?>

在SUBMIT之后,contact.php表单会在提交之前删除代码,检查有效性等。在黑客和垃圾邮件的这个时代,我仍然觉得他们在网址中裸体。如果传递变量是一种可怕且无法形容的方式,那么关于如何完成同样的事情的任何想法?我宁愿不在联系表格上下载人们选择联系谁,但我认为这是一个选择。好的......好心! ;)

2 个答案:

答案 0 :(得分:1)

使用Javascript通过帖子提交而不是获取。发送这种数据比获取更好的方式。

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);
}

答案 1 :(得分:0)

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

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

然后引入一些jQuery:

$('.contact-user').on('click', function(e){
    var userEmail = $(this).data('user-email');

    $.post('handle_contact.php', {
        userEmail: userEmail
    }, function(data) {
        // Do something with data
    }, 'json'); // JSON return for example
});

要回答您的问题,但您所做的不是危险,但如果您没有正确处理变量,可能会导致问题。攻击者可以很容易地传入危险的代码,如果你没有正确地进行消毒,你可能会非常脆弱。但是,这不是您的独特之处。