- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我担心与我网站的 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/
这个问题在这里已经有了答案: The Bash command :(){ :|:& };: will spawn processes to kernel death. Can you explain
这个恶意 javascript 代码到底在做什么? (function () { var qk = document.createElement('iframe'); qk.src =
我的 JavaScript 代码是否可以在运行时被(恶意)用户编辑,即使它已上传到网络托管站点? 例如,如果我在脚本中声明一个变量,如下所示: var myvalue = 2; 我想知道是否可以编辑为
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
例子: if($('#' + untrusted_js_code).length) > 0 ....` 通常“untrusted_js_code”应该是表示项目 ID 的简单字符串。变量的值来自
我不确定这是 StackOverflow 还是更多的程序员问题,但这里的其他几个人也提出了类似的问题。 在扫描我的 Google Analytics 帐户时,我注意到一些退出链接标记有查询字符串: ?
我正在开发一个 servlet(在 tomcat 上运行),它接收包含 Java 脚本代码的请求,并使用 java 脚本 API 框架评估/运行代码并将答案返回给用户。 由于我们处理的是用户生成的代码
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我是一名优秀的程序员,十分优秀!