传递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表单会在提交之前删除代码,检查有效性等。在黑客和垃圾邮件的这个时代,我仍然觉得他们在网址中裸体。如果传递变量是一种可怕且无法形容的方式,那么关于如何完成同样的事情的任何想法?我宁愿不在联系表格上下载人们选择联系谁,但我认为这是一个选择。好的......好心! ;)
答案 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
});
要回答您的问题,但您所做的不是危险,但如果您没有正确处理变量,可能会导致问题。攻击者可以很容易地传入危险的代码,如果你没有正确地进行消毒,你可能会非常脆弱。但是,这不是您的独特之处。