JS与OC交互、js事件注入、修改js方法实现

JavaScript022

JS与OC交互、js事件注入、修改js方法实现,第1张

由于UIWebview即将废弃,相比较于WKWebview,通过测试即可发现UIWebview占用更多内存,且内存很夸张。WKWebView网页加载速度也有提升,但是并不像内存那样提升那么多。下面列举一些其它的优势:

WKScriptMessageHandler是因为我们要处理JS调用OC方法的请求。

WKScriptMessage有两个关键属性name 和 body。

因为我们给每一个OC 方法取了一个name,那么我们就可以根据name 来区分执行不同的方法。body 中存着JS 要给OC 传的参数。

ocAddAction方法在js文件中并没有定义

实现WKNavigationDelegate协议方法,执行之后会在WKScriptMessageHandler代理方法中拦截到 ocZRAction

动态修改alert系统函数的实现,当js中调用alert函数时,触发的是我们自定义方法

URL Scheme拦截的问题,这里不做赘述,请看 demo

JS注入详情

参考链接:

链接一

链接二

防止sql注入攻击,在数据库方面,针对每一个表的增删改,写存储过程,程序主要靠存储过程操作数据。 在代码中,个别特殊需要数据查询的,如果不能通过存储过程,那就尽量用传参的方式,尽量不要拼接sql。 如果非要拼接,要对拼接字符串进行处理,Tools的如下字符串处理方法可以防止注入攻击: ///  /// 格式化文本(防止SQL注入) ///  ///  ///  public static string AntiSQL(string html) {     Regex regex一 = new Regex(@"<script[\s\S]+", RegexOptions.IgnoreCase)    Regex regex二 = new Regex(@" href *= *[\s\S]*script *:", RegexOptions.IgnoreCase)    Regex regex三 = new Regex(@" on[\s\S]*=", RegexOptions.IgnoreCase)    Regex regex四 = new Regex(@"<iframe[\s\S]+", RegexOptions.IgnoreCase)    Regex regex5 = new Regex(@"<frameset[\s\S]+", RegexOptions.IgnoreCase)    Regex regex一0 = new Regex(@"select", RegexOptions.IgnoreCase)    Regex regex一一 = new Regex(@"update", RegexOptions.IgnoreCase)    Regex regex一二 = new Regex(@"delete", RegexOptions.IgnoreCase)    html = regex一.Replace(html, "") //过滤标记     html = regex二.Replace(html, "") //过滤href=javascript: () 属性     html = regex三.Replace(html, " _disibledevent=") //过滤其它控件的on...事件     html = regex四.Replace(html, "") //过滤iframe     html = regex一0.Replace(html, "s_elect")    html = regex一一.Replace(html, "u_pudate")    html = regex一二.Replace(html, "d_elete")    html = html.Replace("'", "’")    html = html.Replace(" ", " ")    return html