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

标签 javascript php jquery html xss

我担心与我网站的 javascript 文件相关的问题,我不确定这是否可行。

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

示例:

一个用户只能在他的页面上发表文章:

HTML

文章形式只会在他的页面中显示给用户。

<?php
if( $user->id == $page->userID )
{
?>    
<form>
<h1>Add new article:</h1><br />
<textarea name="articleText" cols="65" rows="3"></textarea>
<input class="SubmitArticle" id="<?php echo $userPage->id; ?>" name="SubmitArticle" type="button" value="Submit article" />
</form>
<?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 文件中插入代码以在其他用户页面上写文章(这是不允许的),攻击者使用查看页面源(假设 page_id=12)从 html 元素中读取页面 id:

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

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

最佳答案

我认为您对网络服务器的工作原理有一些误解。

从客户端的 Angular 来看,服务器发送给客户端的所有内容都是只读的。

假设您从互联网上下载了一个 zip 文件。然后修改并保存。保存过程将发生在您的硬盘驱动器上,而不是在服务器上。当您编辑本地文件(在您的示例中为 javascript 文件)时,它不会在服务器上进行编辑,只会在您的本地 PC 上进行编辑。

因此,您可以随意编辑/编辑您的本地文件。除非您以某种方式将它上传到服务器(例如 FTP),否则它只会在您的本地 PC 上。

考虑到这一点,您应该始终在服务器端验证数据,因为熟练的用户可以编辑您的 javascript 以删除数据验证并将其发送到服务器。

关于javascript - 有人可以离线编辑 javascript 文件来运行恶意代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253166/

相关文章:

php - 选择不同的选定行

javascript - ag-grid - 数据更改时调整细节高度

javascript - 事件在卸载前的未定义位置

javascript - 如何将我的 JSON 文件解析为我可以在 React js 中操作的对象

jquery 如果值不为空添加事件类

javascript - jquery .prop() 不适用于带有复选框的下拉菜单

javascript - Next Previous 按钮和下拉框在内容 slider 中协同工作

javascript - keypress/keyup 在 Chrome 移动浏览器上不起作用

php - 无需翻译的 Silex 表单验证

javascript - 通过javascript填充html表格