我担心与我网站的 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/