嘿所有,我面临着一个相当严重的安全错误。我先概述一下我的代码。
<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;
});
工作正常,但我遇到了问题。如果用户发现评论(不是他们)并使用像firebug这样的插件,他们可以将响应&gt;短替换为另一个,并编辑任何评论。当然,在edit.php中,我可以检查响应表的短路并查看用户是否检出,但我想找到一种不显示文本区域的方法,除非该响应是由该用户确定的
这可能吗?
提前致谢, 将
答案 0 :(得分:3)
这可能吗?
当然......但它不会阻止用户/修复您的安全漏洞。要修复此检查服务器端,始终仔细检查应该是服务器端安全的任何内容,绝不相信您的输入。用户尝试做恶意的事情不会被JavaScript中的任何内容阻止...将数据发送到您的服务器,他们不应该完全他们将做什么第一
答案 1 :(得分:0)
它/可能适用于“普通用户”,但是当它归结为避免黑客攻击时,你也可以要求黑客点击一个按钮来“证明”他的输入是有效的!
您的验证器脚本正在其他人的计算机上运行,因此他/她可以操作它(甚至可以使用NoScript等转换它)。