电脑屏幕显示节电模式然后黑屏处理小妙招 电脑开机黑屏显示节电模式怎么办( 二 )

  • 比如你写个留言本,有人去留言写,这个被显出来容易挂病毒都很容易,和数据库无关 。
  • XSS概念
  • XSS又称CSS,全称CrossSiteScript(跨站脚本攻击),XSS攻击类似于SQL注入攻击,是Web程序中常见的漏洞,XSS属于被动式且用于客户端的攻击方式,所以容易被忽略其危害性 。其原理是攻击者向有XSS漏洞的网站中输入(传入)恶意的HTML代码,当用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的 。如,盗取用户Cookie信息、破坏页面结构、重定向到其它网站等 。
  • 理论上,只要存在能提供输入的表单并且没做安全过滤或过滤不彻底,都有可能存在XSS漏洞 。
  • 下面是一些最简单并且比较常见的恶意字符XSS输入:
  • 1.XSS输入通常包含JavaScript脚本,如弹出恶意警告框:
  • 2.XSS输入也可能是HTML代码段,譬如:
  • (1).网页不停地刷新
  • (2).嵌入其它网站的链接
  • 除了通过正常途径输入XSS攻击字符外,还可以绕过JavaScript校验,通过修改请求达到XSS攻击的目的,如下图:
  • 了解到XSS攻击的原理和危害后,其实要预防也不难,下面提供一个简单的PHP防止XSS攻击的函数:
  • 除了通过正常途径输入XSS攻击字符外,还可以绕过JavaScript校验,通过修改请求达到XSS攻击的目的 。
  • 了解到XSS攻击的原理和危害后,其实要预防也不难,下面提供一个简单的PHP防止XSS攻击的函数:
  • 避免被XSS:
  • 1.给用户开放的编辑器尽量过滤掉危险的代码
  • 如果是html编辑器,一般的做法是保留大部分代码,过滤部分可能存在危险的代码,如script,iframe等等
  • 三、PHPMySQL预处理语句
  • 预处理语句对于防止MySQL注入是非常有用的 。
  • 预处理语句及绑定参数
  • 预处理语句用于执行多个相同的SQL语句,并且执行效率更高 。
  • 预处理语句的工作原理如下:
  • 预处理:创建SQL语句模板并发送到数据库 。预留的值使用参数\”?\”标记 。例如:
  • 数据库解析,编译,对SQL语句模板执行查询优化,并存储结果不输出 。
  • 执行:最后,将应用绑定的值传递给参数(\”?\”标记),数据库执行语句 。应用可以多次执行语句,如果参数的值不一样 。
  • 相比于直接执行SQL语句,预处理语句有两个主要优点:
  • 预处理语句大大减少了分析时间,只做了一次查询(虽然语句多次执行) 。
  • 绑定参数减少了服务器带宽,你只需要发送查询的参数,而不是整个语句 。
  • 预处理语句针对SQL注入是非常有用的,因为参数值发送后使用不同的协议,保证了数据的合法性 。
  • PDO预处理机制
  • 可以使用多种方式实现预处理:指的是在绑定数据进行执行的时候,可以有多种方式 。
  • 预处理语句中为变量
  • 使用数组指定预处理变量
  • 1、准备预处理语句(发送给服务器,让服务器准备预处理语句)
  • 2、发送预处理语句
  • 3、给预处理绑定数据
  • 4、执行预处理:将要操作的数据发送给预处理语句,再执行预处理语句
  • PDO预处理原理
  • PDO的预防sql注入的机制也是类似于使用mysql_real_escape_string进行转义,PDO有两种转义的机制,第一种是本地转义,这种转义的方式是使用单字节字符集(PHP<5.3.6)来转义的(单字节与多字节),来对输入进行转义,但是这种转义方式有一些隐患 。隐患主要是:在PHP版本小于5.3.6的时候,本地转义只能转换单字节的字符集,大于5.3.6的版本会根据PDO连接中指定的charset来转义 。
  • 第二种方式是PDO,首先将sql语句模板发送给MysqlServer,随后将绑定的字符变量再发送给Mysqlserver,这里的转义是在MysqlServer做的,它是根据你在连接PDO的时候,在charset里指定的编码格式来转换的 。这样的转义方式更健全,同时还可以在又多次重复查询的业务场景下,通过复用模板,来提高程序的性能 。如果要设置MysqlServer来转义的话,就要首先执行:
  • 原始链接方法:
  • 可见这次PHP是将SQL模板和变量是分两次发送给MySQL的,由MySQL完成变量的转义处理,既然变量和SQL模板是分两次发送的,那么就不存在SQL注入的问题了,但需要在DSN中指定charset属性,如:
  • 示例:
  • 总结:当调用prepare()时,查询语句已经发送给了数据库服务器,此时只有占位符?发送过去,没有用户提交的数据;当调用到execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会 。
  • 小结
  • 推荐阅读