网络安全现在越来越受到重视,其中后端应用最常见的安全漏洞就是SQL注入,据owasp(开放式Web应用程序安全项目组织) 统计,注入漏洞常年排名TOP 3。为了尽可能地减少SQL注入问题,我们进行了一些实践总结,并在部门内部进行了推广。
SQL注入原理
SQL注入攻击是通过操作输入来修改SQL语句,以达到执行注入的SQL、进而对web 服务器 进行攻击的方法。简单的说就是在web表单或页面请求的查询字符串中插入SQL命令,最终使web服务器执行恶意命令的过程。可以通过一个例子简单说明SQL注入攻击。假设某网站页面显示时URL为 ,此时URL实际向服务器传递了值为123的变量test,这表明当前页面是对数据库进行动态查询的结果。如果服务器使用了SQL动态拼接,此时可以在URL中插入恶意SQL语句并执行。例如预期执行语句是:
select * from user where testId = 123
如果有人恶意构造test=123 or 1 = 1;那么最后实际执行的语句就是:
select * from user where testId = 123 or 1 = 1
SQL注入本质是利用动态SQL拼接并直接执行,并且前端输入的参数未经过严格校验直接参与SQL拼接,输入参数被恶意利用的话就存在不受控的命令注入风险。SQL注入会攻击数据库,所以危害是非常大的,SQL注入的危害包括:1. 数据库信息泄露;2. 数据库恶意操作攻击服务器;3. 删除和修改数据库表信息;4. 服务器远程控制等。 防SQL注入原则 根据SQL注入的原理,我们总结了如下防SQL注入的原则。1)尽可能参数化执行SQL,使用PreparedStatement;2)无法参数化执行就对输入参数使用强类型接收,如枚举;3)如果既不能参数化也无法用强类型,就做好格式校验;4)如果上面都做不到,最后考虑做好注入字符的转义过滤。
关系型数据库都提供了预编译执行SQL语句的方式,和直接执行有参数拼接的SQL方式不同的是,在SQL预编译阶段,所有参数都会被模板化,参数值不直接参与编译,这样参数值就无法改变SQL的结构,包括语句条数,参数个数,查询条件等等,就算参数里存在恶意注入参数值也无法破坏原来的SQL结构。下面举例说明拼接执行和参数化执行的区别。直接执行:
select name from user_info where name = 'gouge'
使用预编译执行(也就是PreparedStatement)分两步。
select name from user_info where name = ?
select name from user_info where name = 'gouge'
预编译后的语句执行时,就算参数值里有恶意注入,也只是当成一个字符串的一部分,并不会导致SQL结构被破坏,所以这种方式能够从根本上杜绝SQL注入的风险,也是目前公认防SQL注入最好的办法。
SQL注入依赖于SQL动态拼接,如果非String(包括枚举)参数有强类型严格校验,拼接的时候就没有SQL注入的风险
对于可枚举的String入参,在后端需要进行枚举值白名单校验,防止伪造。以经常使用的排序字段为例,排序字段不少情况下是从前端传过来的,不可信。所以需要做枚举校验,看看传过来的排序字段是否在预期内。
存储过程因为也是预编译的,所以也可以防止SQL注入,不过存储过程已经是不推荐的实践了,这里只是列举一下。
这个实践方案的优先级最低,前面的方案都无法实施或代价太大的情况下,才考虑使用,因为这个办法并不是完全可靠的。这个办法是把用户输入拼到SQL之前,先对输入进行转义,所以实现上是和数据库绑定的,不同的数据库转义实现都不一样。原理是对特定的查询,数据库支持一种或多种转义的方法,如果对所有用户输入的参数拼到SQL之前进行合适的转义,就可以防止SQL注入,但是不能保证所有情况都能处理完美。OWASP组织提供了可以直接使用的java类库esapi,可以用来完成转义,目前支持mysql,oracle,还不支持sqlserver,OWASP官方文档中也有说明这个类库也不能保证100%可以防SQL注入。
Mybatis防SQL注入
Mybatis的XML Mapper中参数有两种表达方式:#{xxx}和${xxx},区别是#{xxx}会被模板化为参数化形式(?),所以参数值不参与编译;${xxx}会被替换为对应的参数值参与编译。所以使用#{xxx}语法的参数没有注入风险,但是使用${xxx}不当,就存在注入风险。我们使用sonar规则来检测${xxx}的使用情况,发现很多可以使用#{xxx}的情况下,却使用了${xxx},大概是使用者还不了解其中的区别和风险。根据防止SQL注入的原则,针对使用Mybatis作为ORM的时候,我们可以得出这样的结论:
account = '${account}'
account = #{account}
WHERE id IN (${item.ids})
AND id IN #{id}
top $queryCnt
top #queryCnt
$start $end
#start #end
email concat #emailSuffix
bind name valueEmail #pattern
安全写法3:在java代码中构造好pattern,使用#{}语法6) limit语法风险写法:
$offset $size
#offset #size
$orderByClause
安全建议1:可以在xml中使用if代替java中拼凑orderby(推荐);安全建议2:对排序字段和排序类型值进行白名单校验;8)动态表名安全建议:建议实现Mybatis插件,在框架层面对表名进行替换处理,避免在xml使用${}来拼凑表名。9) Mybatisexample语法风险用法:
if test $orderByClauseif
Mybatis生成的example使用,大多数情况下是安全的,但是orderByCluase是通过字符串拼接的,也是不安全的,所以不建议使用。安全建议:可以考虑使用mybatis新出的mybatis-dynAMIc-sql或者国内开源的mybatis-plus,比example语法更简洁,也更安全。例如:
Query.orderBy(CREATEAt.descending());
除了在SQL语句层面尽量保证防止SQL注入风险之外,基础设施WAF(Web Application Firewall)也是非常有效的防止SQL注入的措施,有条件的也可以考虑部署WAF。
本文主要是记录了经销商技术部在安全方面防止SQL注入的一些实践探索和总结,包括SQL注入的原理,防SQL注入总体遵循的原则,以及具体的实践中的安全建议,希望对其他人也有所帮助。
办事处和经销商有什么区别
办事处是协调,方便,管理市场的!只是一个厂家的代表机构!不具有任何的权利!经销商是直接服务与厂家,终端的!是厂家和终端的纽带,桥梁!
新安股份的公司产业
新安化工集团股份有限公司农化事业部为新安化工集团股份有限公司2004年管理流程重组后新成立的部门,下属农化事业部办公室(下设安全环保办公室)、营销部、研究所、2家工厂(建德化工二厂、建德农药厂)是公司农药、化工产品的生产单位,主要以生产除草剂、杀虫剂、化工产品及中间体产品为主,主要农药原药有草甘膦、二氯喹啉酸、单甲脒和甲基(乙基)毒死蜱,其中主导产品草甘膦原粉生产规格为3万吨。 农化事业部建立了以质量控制为中心,标准化为手段,经济责任制为保证的管理方法,使产品质量不断提高。 历年来2家工厂分别通过ISO9001质量管理体系、ISO、职业安全健康体系认证和清洁生产验收。 “新安”草甘膦荣获“中国名牌”和“中国驰名商标”两项荣誉称号,目前正在申报国家免检产品。 此外,还参与草甘膦国家标准起草,并在工厂内部采用国际标准组织生产。 农化事业部拥有一支装备精良、业务素质高,经验丰富、技术创新能力强的研发队伍。 通过技术改造传统产业以及资源的自我配套与综合利用,实现了亚磷酸二甲酯、草甘膦等产品的清洁生产,提高了元素利用水平,实现了与环境相容的可持续发展。 农化事业部主要负责国内产品销售工作,近年来重点加强了对营销渠道的优化和重组,并强化对顾客的服务、与顾客建立合作伙伴关系。 同时在内部还组建了一支技术服务队伍,技术人员走到经销商中推广技术、宣传产品。 使新安品牌在消费者中影响力不断扩大。 2006年“新安”牌产品被中华人民共和国商务部评为“最具市场竞争力品牌”。 有机硅事业部主要从事有机硅产品生产、研发、销售,下设有机硅厂、研究所、市场营销部、综合办公室(安全环保办公室)四大机构,共有员工423人,其中大专以上学历205人,高级技术职称4人。 主要产品:甲基氯硅烷单体、二甲基硅氧烷混合环体、110乙烯基生胶、混炼胶、107胶等。 事业部自成立以来,紧密围绕公司愿景,践行新安文化精神,在短短几年里,使新安化工有机硅产业从无到有、从小到大、从弱到强,并与农化事业部草甘膦产品形成特色循环经济效益,成为国内有机硅行业龙头企业。 同时通过自主创新,单体合成技术取得重大突破,技术水平国内领先;二甲水解通过引进、吸收,实现了加压水解,大幅提高了生产效率和原料利用率。 在整体产业布局中,依托公司整体草甘膦—有机硅特色产业链,在上、下游同时发展:在四川、黑龙江建立工业硅基地,在开化元通建立硅块精选、硅粉集中加工基地;在建德白南山化工区建设了国内单套规模最大的高温胶和室温胶生产线,形成了上、下游一体化发展的雏形。
怎么样管理和提高卖场的销售额?
1、培训导购应从哪些方面入手?“导购”从字面上来看,就是“导”和“购”二字,就是“引导”和“购买”,导购工作的核心就是引导,帮助顾客选择,实现顾客在门店购买的目的。怎么引导和帮助的呢?站在门店里,等待上门的顾客,根据顾客的喜欢,帮助介绍、试穿、挑选合适的衣服,顺便介绍下企业的品牌、款式,到最后顾客愉快的买单。好像不是复杂的事情,比我们那些上门推销、预约谈判等销售的难度小很多。顾客在什么时候需要我们导购的帮助?需要什么样的帮助?我们的帮助会产生购买的效果吗?顾客凭什么接受、相信我们导购的帮助呢?这就是培训的重点内容了,帮助顾客需要技巧、心态和知识,这样的帮助才有购买的说服力。第一,要做导购前的准备。购买的发起人、影响者、决策者、购买者、使用者我们必须在顾客的一言一行中了解,以此寻找突破点。第二,需要彻底了解顾客的购买过程。 需要认识、信息收集、可供选择,方案评估、购买决策、购后行为,这是提高技能的基础。只有真正了解了顾客购买的过程,才能随着顾客购买过程的进展,提供不同的服务。第三,将一些基本的导购过程程序化。导购的三步曲:第一步:招呼和接待顾客热情周到,尽快与顾客交流、表现专业形象(制服整洁,使用普通话,自我介绍)、礼貌待客(微笑,注视,礼貌用语)、保持一定距离(给顾客留一定空间和时间)、兼顾顾客的同行者;第二步:与顾客沟通(商谈)十心十意,与顾客接触有信心、观察顾客要留心、关心顾客要真心、利益让顾客动心、产品演示要细心、与顾客沟通有耐心、把握顾客的好奇心、善用顾客从众心理、对待异议要用心、对顾客的购买决策有平常心;第三步:促成购买。看准成交时机、巧妙促成购买、测试和检查商品、开单并协助付款、欢送顾客、做好客户回访。坚韧的性格、丰富的知识以及服务为先的精神理念是成功导购员必备的三个基本素质。2、怎么样陈列终端和直营店的商品?可根据消费者心理陈列商品:消费者进店购买商品,能否清晰准确的感知商品形象,获得良好的情绪体验,和大程度上取决于产品的陈列情况。 商品的摆放应力求醒目突出,以便引起消费者的注意。 合理的摆放高度。 顾客在进店时无意识的展望高度为0.7到1.7之间,同视觉轴在30度角上的商品最容易让人清晰感知,60度的商品则次之。 其次,保持商品的量感法,就是陈列的商品数量要充足,给消费者丰满丰富的映像。 量感可以使消费者产生充满挑选余地的心理感受,进而激发购买欲望。
一、橱窗陈列在进行橱窗陈列时,首先要确定橱窗的宣传主题,而选择主题则不能脱离陈列内容的主体——商品。可以从不同的方面和角度来选择展示陈列的主题,如从季节变化来展示,从流行性来展示,从经营的代表性品种来展示等。此外,还可从商品的用途方面着眼,选择陈列主题。选择陈列主题之后,要恰到好处地确立橱窗色彩的基调。一个好的色彩基调可把顾客从老远的地方吸引过来驻足观看,因此除了考虑色彩的搭配外,更要考虑如何用色彩表现橱窗的中心内容(主题)并与之相一致。如:明度强的陈列商品可用明度弱的色彩作陪衬,暖色调的陈列商品可用冷色调作陪衬。绝对不能出现橱窗内的所有色彩都很鲜、很跳,这样反而会使顾客没有观赏的兴趣。二、墙面陈列墙面陈列或墙壁上的陈列架可根据商品的特点加以变化,进行立体陈列。从卖场的地板到天花板之间的这段距离,可将商品以多种方式进行自由的陈列和装饰。墙面陈列最容易诱导顾客进入店内,如将服装、乐器、小饰品、帽子、皮带、皮包等商品组合在一起,固定陈列在墙壁上,不仅可强调商品的立体感、丰富感,还可使本来很一般的墙壁散发出具有个性的魅力。三、柜台陈列最普通的橱柜的高度通常为90~100厘米,用两片玻璃隔板隔成3段,兼具面对面销售的功能。柜台陈列比较适宜排面陈列和堆码陈列的分类、组合方式,陈列时要将商品整理洁净,商标、图案要面向顾客,每个单元的艺术处理都要注意做到局部和整体的统一。辅助的道具要精巧别致,陈列时最好用丝、毛等高档织物加以衬托,以表现出商品的造型装饰美。柜台的最底层绝对不能用来作为陈列商品的地方,原因有两点:一是显得商品较陈旧;二是因为顾客大多不愿意往这些隐蔽的地方寻找自己所需要的商品。四、特价台陈列特价台陈列是目前各类卖场在举办短期性促销活动、季节性削价、处理积压商品时最常用的陈列方式。此种陈列方式的优点有很多,比如商超可以随时更换商品、顾客可以自由选择商品等。要注意的是虽然特价台是临时性的陈列,但这种陈列方式难免会被人误认为是垃圾商品,稍有品位或追求面子的顾客不会来选购。所以在陈列商品之前,应在特价台的周边适当添加醒目的POP,以不超过10~15个大字的内容,明确、直白地告知所有的顾客“此商品是×××品牌,原价××元,现价××元,为期××天”,以激起顾客的好奇心和购买欲望。展示台由人为设置的空间结构组成,它起着“画龙点睛”的作用。五、店头POP陈列店头POP具有推动销售、建立品牌知名度、增加利润、使消费者认识或喜欢商品、刺激或助长购买欲望的特点,因此在商超内常可见到这种陈列方式。分两类:公司印制的POP和人工绘制的。3、怎么样提高终端和直营店业绩?首先你要考虑货品问题,是否符合当下的流行趋势价格,是否符合你的店铺的消费群;其次可以尝试调场,也许换个摆位会有成效,比如货量比较大的,可以开大穿模特等等,上面是客观原因。外部因素:从主观上看自己,可以提高自己对产品的了解,比如哪款产品的面料是什么,有什么好处,洗涤方法是什么,什么款式适合什么体型年龄的人;还有就是合理的附加推销,顾客购买牛仔裤可以帮他配一条布带或者T恤。总之总结一下就是要熟悉产品的特性,了解该特性带来的好处,并把这些运用合理的语言告诉给你的顾客其实做生意都一样。最重要的一点是拉拢人心。在平时的时候别把顾客看成是单纯的利益关系。你要把他们都当作是自己的朋友,多提些中肯的意见。多培养几个老顾客。而且要在宣传上多动点脑。不要原地不动。有时候只要勤奋点。不用花一分钱就可以做到自己想要的结果`销售首先要对自己所从事的行业充满兴趣和爱好,用自己的信心去感染客户其次要做好充分的准备工作,包括对客户兴趣爱好的研究,投其所好,机会永远是留给有准备的人的谈判技巧方面的掌握,把握客户的想法,引导消费销售销售先销后售,做好售后服务,获得客户的信任,这一点对于渠道销售特别重要。4、开发新市场应从哪些方面入手?如果新产品的市场是空白的,就大力投入宣传,引起市场高度的重视,利用消费者可诱导性,上促销。拉动终端市场销量。提高终端市场的占有率,争取在空白市场垄断,提高拦截。想想,所有零售终端全是你的产品,没有竞品的情况!假如你的产品是一种食品,所有终端都是你产品,你就已经垄断了市场!如果新产品不是空白市场:先从商业渠道下手,通常零售终端都掌握在这些商业的手上。将渠道放宽,争取让网络覆盖你所在的所有市场。低级别的批发市场,可以建立这样的渠道。大的商业渠道——低级别的批发市场——终端零售市场大的商业渠道——终端零售市场。详细、具体的市场调研1、风土人情。包括当地的人文环境、所处地理位置、人口数量、经济水平、消费习惯等。2、市场状况。主要指市场容量及竞品状况,竞品状况包括竞品规格、价位通路促销、竞品销售量(月度、年度)等。3、客户状况。通过直接或间接的方式,了解当地经销商的状况,包括竞品经销商及本品潜在经销商。对竞品经销商要了解市场动态、与厂家合作程度等,对本品潜在经销商要分析其具备不具备作为代理商的标准,即良好的信誉、健全的网络、足够的仓储、雄厚的资金以及合适的人力、运力等。通过以上市场调查,其目的是熟悉市场行情,掌握客户一手资料,确定潜在目标客户群。在寻找潜在客户的方式上,可采用“由下而上,追根溯源”法,此方法由于间接得到,且来自一线,因此,更便于把握事实真相,找到合适的客户。列名单,洽谈客户潜在的目标客户群确定后,我们可以根据代理商所须具备的条件及其优劣势,列出一个目标客户清单,并进行详细分析、比较,在进行新一轮的筛选后,就可以电话预约,并登门拜访了。1、电话预约。在登门拜访以前,一定要进行电话预约,因为电话预约,一方面表示对对方的尊重,同时,通过初步的电话沟通、了解,使其对公司、产品、政策等有一个大致的轮廓,便于下一步确定谈判的侧重点,也好更清晰地判断其对产品的兴趣及经销该产品的可能性有多大,以便于自己有效安排时间,不“眉毛胡子一把抓”。2、上门洽谈。在决定了拜访哪几家客户后,我们就可以规划线路图,对客户进行登门拜访了。在上门谈判时,要善于察言观色,除了适时呈上自己的名片、资料、样品以及遵循“礼在先,赞在前,喜在眉,笑在脸”以渲染、制造气氛外,还要注意“三不谈”,即客户情绪不好时不要谈,客户下属分销商在场时不要谈,竞品厂家业务员在场时不要谈。3、洽谈内容。在切入正题以前,可谈些轻松以及对方都感兴趣的“题外话”,比如国家宏观经济政策及走势,行业发展态势,未来市场走向等,旨在创造与客户谈话的良好氛围,那么,在切入正题后,从公司的发展概况谈起,要与客户具体谈公司的产品极其特点,产品的价格政策及在市场上的优势,最后,重点谈判产品进入及其市场操作模式,从产品的选择,到产品的定价,从促销的设定,到渠道的拉动,谈的越详细客户将越感兴趣,营销人员最好还能把未来的市场蓝图充分向客户展示,让客户充满憧憬和希望,从而下定决心经销该产品。4、注意事项。在洽谈过程中,要注意聆听的艺术,遵循两只耳朵一张嘴即2:1原则(听与说比例为2:1),一方面表示对对方的尊重,另一方面,也有利于了解和回答对方,并发现对方对市场操盘有无运作思路。同时,对不同类型的客户,还要采取不同的交流方式。对老年人,要象对待父母一样表示尊重,说话语速要放慢,洽谈要象谈心一样,处处表现出你的稳重;对于中年人,要极尽赞美之能事,通过洽谈,让其感到成就感,公司产品交给他做一定能操作成功;对于青年人,要放开谈自己的思路、运做模式、营销理念,让其心驰神往,口服心服,从而乖乖就范。跟进、签约通过洽谈,对于符合公司要求的目标客户要及时打电话进行沟通和跟进,跟进要遵循1:4:7法则,即“欲擒故纵”的方式,而千万不能急于求成,不分时间、地点地催促客户上货,否则会弄巧成拙,贻误战机,让客户感觉你是在急于寻找客户,从而给你提出一些“不平等条约”,为双方以后的合作埋下阴影。在跟进过程中,客户可能会提出一些心头疑问,比如,货拉来不适销对路怎么办;产品出现质量问题怎么办;职能部门抽检怎么办等等细节问题,只要你对以上的问题给予了合理解答,目标客户就基本上确定下来了,然后,通过邀请其到公司参观考察等方式,进一步扫除客户心里的疑团和障碍,最后,趁热打铁,签定经销协议。一个新客户就这样诞生了。
发表评论