Node.js中用escape解决sql注入

JavaScript018

Node.js中用escape解决sql注入,第1张

这时正常情况下能查询到一条数据,如果将param修改成

let param = 'ns"-- '

sql语句就会变成

select * from tb_nature where nature = "ns"-- " and del_status=1

后面的del_status就会被参数中的 -- 注释掉,失去作用,能查询到多条数据。

如果对param使用escape包装下,就能将参数中的特殊字符进行转义,防止sql的注入。

let sql = 'select * from tb_nature where nature = ' + mysql.escape(param) + ' and del_status=1'

是CSRF(Cross-site request forgery) 不是你写的那个!

跨域不用担心.主流浏览器都会帮你做防御的. 问题不大,主要是你自己别给其他域的权限即可.非必要的话,以最小权限原则.

xss主要就是过滤输入输出.如果业务很多,还是找人审计代码吧.或者用比较成熟的模块.CSRF的话,1,验证来源 2加随机token之类的.

sqli主要还是过滤输入的地方.过滤/转义关键字比如select,and,or等等(有专门的防注入模块).觉得怕麻烦的话.用那些云主机的防御功能.再加个cdn基本就没事了.(对于一般的反射型跨站也适用)

很多网站都有私信或者留言板功能。登录用户可以发表评论或者给其他用户(包括管理员)发送私信。一个最简单的模拟表单如下:

<form action="sendmessage.php" method="post'">

<textarea name="message"></textarea>

<input type="submit" value="send" />

</form>

当用户点击发送时,这条消息会被保存在数据库中指定的数据表中,另一个用户当打开这条消息的时候将看到发送的内容。但是,如果一个恶意攻击者发送的内容包含了一些javascript代码,这些代码用于偷取敏感的cookie信息。当用户打开看到这条消息的时候,恶意的javascript代码就会得到执行,造成敏感cookie信息泄漏。攻击者可以利用获得这些cookie信息进行session hijacking会话劫持,直接以合法用户的身份登录其他用户的账户。

恶意攻击者可以在消息框中加入一下javascript代码: