我在解决这个问题上遇到了问题.我首先尝试将脚本标记设置为字符串,然后使用jquery replaceWith()在页面加载后将它们添加到文档中:
var a = '<script type="text/javascript">some script here</script>';
$('#someelement').replaceWith(a);
Run Code Online (Sandbox Code Playgroud)
但是我在那个var上得到了字符串文字错误.然后我尝试编码字符串,如:
var a = '&left;script type="text/javascript">some script here<\/script>';
Run Code Online (Sandbox Code Playgroud)
但发送它replaceWith()只是将该字符串输出到浏览器.
有人可以告诉我你如何<script>在页面加载后动态地将标签添加到浏览器中,理想情况下通过jQuery?
假设我有一个带输入框的页面.用户在输入框中键入内容并点击按钮.该按钮触发一个函数,该函数获取键入文本框中的值,并将其输出到文本框下方的页面,无论出于何种原因.
现在,令人不安的是难以找到明确的答案,或者我不会问,但你会如何输出这个字符串:
<script>alert("hello")</script> <h1> Hello World </h1>
Run Code Online (Sandbox Code Playgroud)
这样既不执行脚本也不显示HTML元素?
我在这里真正要问的是,是否存在一种在Javascript中避免HTML和脚本注入的标准方法.每个人似乎都有不同的方式(我使用jQuery所以我知道我可以简单地将字符串输出到文本元素而不是html元素,但这不是重点).
我正在使用selenium python webdriver来浏览一些页面.我想在加载和执行任何其他Javascript代码之前将javascript代码注入页面.另一方面,我需要将我的JS代码作为该页面的第一个JS代码来执行.有没有办法通过Selenium做到这一点?
我用谷歌搜索了几个小时,但我找不到任何正确的答案!
我想知道是否可以通过img-tag注入一些javascript代码.场景是一个人设置这样的html页面
<img src="anotherdomain.com/someimage.jpg" />
Run Code Online (Sandbox Code Playgroud)
Anotherdomain是我的域名.是否可以将/someimage.jpg的调用重定向到包含在请求图像时执行的som javascript代码的另一个文件?
如何防止JavaScript NoSQL注入MongoDB?
我正在开发一个Node.js应用程序,我正在将req.body一个json对象传递给mongoose模型的save函数.我认为幕后有保护措施,但事实并非如此.
我看到我的nopCommerce网站有一个记录搜索:
ADw-script AD4-alert(202) ADw-/script AD4-
Run Code Online (Sandbox Code Playgroud)
虽然他们想要完成什么,但我有点好奇.我搜索了一下,看起来ADw-script AD4-是UTF7中的编码<script>.但为什么alert(202)呢?
他们只是检查漏洞吗?
记录了更多的黑客尝试,我在这里提出了一个关于他们的新问题:黑客企图,他们试图做什么以及如何检查他们是否成功?
我试过使用JavaScriptInterface在WebView中做过.但它没有用.如何从XWalkView获取HTML内容?
通过这种方式,我可以从WebView获取HTML:
public class MainActivity extends AppCompatActivity {
WebView myWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myWebView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
myWebView.loadUrl("http://joerichard.net/api/test/generate.htm");
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if(url.endsWith("generate.htm")){
myWebView.loadUrl("javascript:window.HtmlViewer.showHTML" +
"('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
}
}
});
}
class MyJavaScriptInterface {
private Context ctx;
MyJavaScriptInterface(Context ctx) {
this.ctx = ctx;
}
public void showHTML(String html) {
Document doc = Jsoup.parse(html);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我为XWalkView尝试了相同但没有成功.如何从XWalkView获取HTML源代码?
在PHP Web应用程序中阻止或阻止JavaScript注入所需的措施是什么,以便不提供敏感信息(PHP,HTML/XHTML和JavaScript中的最佳实践)?
根据维基百科关于Bookmarklets的文章(http://en.wikipedia.org/wiki/Bookmarklet),Bookmarklets的概念是:
Web浏览器将URI用于标记的href属性和书签.URI方案(例如http:,file:或ftp:)指定协议和字符串其余部分的格式.浏览器还实现了一个前缀javascript:对解析器来说就像任何其他URI一样.在内部,浏览器看到指定的协议是javascript,将字符串的其余部分视为JavaScript应用程序然后执行,并将结果字符串用作新页面.
它表示结果字符串用作新页面.那么这是否意味着浏览器的原始DOM不受该字符串的影响?但是,如果只将结果字符串用作新页面,我如何在现有DOM中更改或注入新的DOM元素?因为脚本提醒Hello或注入一些新的DOM元素并没有真正返回任何内容.他们有点在现有的DOM上工作.
现在,在Internet Explorer中,除了使用Bookmarklets在页面上执行一些JavaScript之外,我还可以编写一个BHO插件并按以下方式注入:
document = (HTMLDocument)webBrowser.Document;
var injectedJS = System.IO.File.ReadAllText("InjectedJS.js");
var window = document.parentWindow;
window.execScript("(function(){ " + injectedJS + " })()");
Run Code Online (Sandbox Code Playgroud)
同样在chrome中,我可以编写一个扩展来实现同样的目的:
var s = document.createElement('script');
s.src = chrome.extension.getURL("script.js");
s.onload = function() {
this.parentNode.removeChild(this);
};
(document.head||document.documentElement).appendChild(s);
Run Code Online (Sandbox Code Playgroud)
这些有何不同?我所拥有的高级问题是:
execScript方法或在浏览器中使用javascript:protocol 执行JavaScript的方式有什么不同吗?javascript bho bookmarklet javascript-injection google-chrome-extension
我最近一直在寻找Pagedown.js,因为在我的页面上使用mark-down而不是丑陋的readonly textareas.
我非常谨慎,因为它似乎很容易欺骗消毒的转换器.我已经看到围绕Angular.js进行了一些讨论,并且它是html绑定,并且当Knockout.js 3.0出现以前曾经存在对html绑定的不安全感时也听到了一些内容.
似乎所有人都需要做的就是在Pagedown.js中禁用清洁剂,例如:
var safeConverter = new Markdown.Converter();
// safeConverter is open to script injection
safeConverter = Markdown.getSanitizingConverter();
// safeConverter is now safe
// Override the getSanitizingConverter pseudo-code
Markdown.getSanitizingConverter = function () {
return Markdown.Converter;
};
Run Code Online (Sandbox Code Playgroud)
他们可以打开一个站点,直到脚本注入.这不是真的吗?
编辑
那么为什么像这样的图书馆使用消毒剂来使用客户端呢?当然他们说不要渲染未经过清理的HTML,但下一行说使用Markdown.Sanitizer ..
Angular如何通过消毒杀菌剂服务不对它开放,或者这只是一场闹剧?
javascript ×9
html ×4
android ×1
angularjs ×1
bho ×1
bookmarklet ×1
crosswalk ×1
image ×1
jquery ×1
knockout.js ×1
mongodb ×1
mongoose ×1
node.js ×1
php ×1
python ×1
script-tag ×1
security ×1
selenium ×1
unicode ×1
xss ×1