编辑评论 - javascript,php一起工作
问题描述:
嘿,我正面临着一个相当严重的安全错误。让我先概述一下我的代码。编辑评论 - javascript,php一起工作
<li class="comment">
<form action="" method="POST" name="edit-form" class="edit-area">
<textarea style="width: 100%; height: 150px;"><?php echo $response->comment; ?></textarea>
</form>
<div class="comment-area" style="padding-top: 2px"><?php echo (parseResponse($response->comment)); ?></div>
<p class="ranking">
<?php if ($response->user_id == $user_id) : ?>
<a href="" class="editting" data-user="<?php echo md5(convert($response->user_id)); ?>" data-edit="<?php echo $response->short; ?>">Edit</a> • <a href="#d">Delete</a>
<?php else : ?>
<a href="#">Like (<?php echo $response->likes; ?>)</a> • <a href="#">Dislike (<?php echo $response->dislikes; ?>)</a>
<?php endif; ?>
</p>
</li>
是我在我的身上了,和这里的相关JS
$('.editting').bind('click', function(event) {
var num = $(this).data('edit');
var user = $(this).data('user');
if ($(this).hasClass('done')) {
var newComment = $('#comment-' + num + ' .edit-area textarea').val();
var dataString = 'newComment='+ newComment + '&num=' + num;
if(newComment == '')
{
alert('Comment Cannot Be Empty!');
}
else
{
$.ajax({
type: "POST",
url: "edit.php",
data: dataString,
success: function(){}
});
$('#comment-' + num + ' .edit-area').slideDown('slow', function() {
$('#comment-' + num + ' .edit-area').addClass('invisible');
});
$('#comment-' + num + ' .comment-area').slideUp('slow', function() {
$('#comment-' + num + ' .comment-area').removeClass('invisible');
});
$(this).removeClass('done');
$(this).html('Edit');
}
}
else {
$('#comment-' + num + ' .comment-area').slideDown('slow', function() {
$('#comment-' + num + ' .comment-area').addClass('invisible');
});
$('#comment-' + num + ' .edit-area').slideUp('slow', function() {
$('#comment-' + num + ' .edit-area').removeClass('invisible');
});
$(this).html('Done');
$(this).addClass('done');
}
return false;
});
,工作正常,但我有一个问题。如果用户发现评论(而不是他们)并使用像萤火虫一样的插件,他们可以用另一个替换response-> short,并编辑任何评论。当然,在edit.php中,我可以检查响应表中的短小内容,看看用户是否签出,但是我想找到一种不显示文本区域的方式,除非该用户确定该响应。
这可能吗?
由于提前, 请问
答
这可能吗?
当然......但它不会阻止用户/修复您的安全漏洞。修复此问题检查服务器端,总是仔细检查任何应该安全的服务器端,永远不要相信您的输入。用户尝试做一些恶意的事情不会被JavaScript中的任何东西拦截......发送数据到你的服务器,他们不应该是刚好他们会先做什么。
答
像尼克说的那样;永远不要相信JavaScript测试!
它可能适用于“普通用户”,但是当它涉及到避免黑客入侵时,您还可以要求黑客单击按钮来“证明”他的输入是有效的!
您的验证脚本被别人的电脑上运行,那么他/她就可以操纵它(甚至把它使用的NoScript等)
好,我打算做的事情edit.php反正所以我确定它是有效的,但是无论如何我还可以强化js/ – willium 2010-12-19 10:03:21
@tap - 没有太多的事情你还没有做,JavaScript是**开放的,这只是它是怎么回事......我可以打开一个编辑窗口,对这个页面的任何评论以及... *服务器*不会允许它,这是重要的。回到这里,看看你正在尝试做什么......你试图让这个界面更好一些,以帮助某人尝试*操纵你的网站,我不会做任何额外的事情为此,只需在服务器端确保它的安全性,为其他99.9%的用户设计接口(并且仍然安全,重要!) – 2010-12-19 10:07:03
好的!谢谢尼克! – willium 2010-12-19 10:10:42