有人可以离线编辑javascript文件来运行恶意代码吗?

前端之家收集整理的这篇文章主要介绍了有人可以离线编辑javascript文件来运行恶意代码吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我担心与我的网站的javascript文件有关的事情,我不确定这是否可行.

当有人访问网站时,将下载Js文件,如果有人编辑了下载的js脚本并插入了他自己的代码,然后刷新了网站.在新刷新中,网站将读取已编辑的Js文件并运行恶意代码.恶意代码可能用于以正常方式在服务器上运行某些代码.

例:

用户只能在其页面中发布文章

HTML

文章表单仅在用户页面显示.

PHP
if( $user->id == $page->userID )
{
?>    
PHP echo $userPage->id; ?>" name="SubmitArticle" type="button" value="Submit article" />
PHP
}
?>

使用Javascript

$(".SubmitArticle").click( function(e){
    var targetPage = $(this).attr('id');
    var thisForm = $(this).parent();
    var postData = thisForm.serialize() + "&targetPage=" + targetPage;

    $.post(document.location,postData,function(data) {
        $('#mainDiv').html(data);
    });
});

PHP

if( isset($_POST["SubmitArticle"]) )
{
    $pageID = $_POST["targetPage"];
    $text = $_POST["articleText"];

    PublishArticle( $pageID,$text );
}

恶意代码

代码插入JS文件以在其他用户页面上写文章(这是不允许的),攻击者使用视图页面源从html元素读取页面ID(比如说page_id = 12):

postData = "SubmitArticle=1&targetPage=12&articleText='Muwhahahah'";
$.post(document.location,function(data) {
});

如果可能的话,解决方案是什么?

最佳答案
你担心是对的,不要相信客户.永远.

在您的示例中,您应该在发布文章之前验证用户,例如:

if( isset($_POST["SubmitArticle"]) ){
    $pageID = $_POST["targetPage"];
    $text = $_POST["articleText"];

    if( $user->id == $page->userID ){
      PublishArticle( $pageID,$text );
    }
}

不要止步不前

此外,您不应相信客户端会向您发送有效的文章文本和页面ID.它可能是sql注入,恶意javascript,破坏页面的HTML等.您还需要清理您的输入.

猜你在找的HTML相关文章