【问题标题】:Are URL variables safeURL 变量是否安全
【发布时间】:2014-12-20 11:28:10
【问题描述】:

传递 URL 变量是否安全?是的,我知道它们存在于普通站点中,任何人都可以查看并查看.... 这不是 SSN 或任何东西。我不是在谈论 HTTPS 项目,只是传递一个标题和一个电子邮件地址....

例如,假设在网站的“关于我们”页面中,有一个员工列表。让我们以“吉米”为例。吉米有个人简介和照片,以及他的个人简介旁边的 [联系吉米] 按钮。如果有人点击 [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';
}
?>

提交后,contact.php 表单会在提交前剥离代码、检查有效性等。在这个黑客和垃圾邮件机器人的时代,我仍然觉得在 URL 中有它们是赤裸裸的。如果传递变量是一种可怕且难以形容的方式,那么对如何完成同样的事情有任何想法吗?我宁愿不要在联系表上下拉供人们选择联系谁,但我想这是一个选项。好吧....善良! ;)

【问题讨论】:

  • @jeroen 它不会比任何其他实现更容易受到垃圾邮件的影响;除非您要在所有链接和表单等中实施 CSRF;这是不可行且不太可能发生的,那么所有请求都可能成为垃圾邮件的原因。
  • @Bowersbros 你说得对,我的评论太宽泛了,没有针对问题...

标签: php variables url


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    另一种完成同样事情的方法是使用 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
    });
    

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

    【讨论】:

      猜你喜欢
      • 2020-09-10
      • 1970-01-01
      • 2015-11-04
      • 1970-01-01
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多