+ -
当前位置:首页 → 问答吧 → Security 问题

Security 问题

时间:2014-08-01

来源:互联网

想试下由头到尾自己写一个系统出黎
唔用免费果 d 系统 (e.g. WordPress)
想问有 d 咩 Security 既问题要留意
净系识 SQL Injection 同 XSS Attack ...
仲有冇其他?

同埋用 PDO 系咪真系可以防到 SQL Injection?

作者: bbsocute   发布时间: 2014-08-01

系统安全话题很广.
目前网站漏洞大多以.SQL Injection, XSS Attack为主.
或者也去了解一下 csrf , 目录遍历等

另外服务器的安全也相当重要.

PDO是否能防御SQL Injection, 我相信不能呢.
还是做好基本SQL QUERY封装就是

作者: DevMark   发布时间: 2014-08-01

PDO 我而家都系新手
我睇过 stackoverflow d post 讲
PDO 果度用 bindParam 方法黎 query , 其实系咪咁已经可以?

作者: bbsocute   发布时间: 2014-08-01

恩.都可以. 加油!

作者: DevMark   发布时间: 2014-08-01

引用:原帖由 bbsocute 於 2014-7-9 11:55 PM 发表
想试下由头到尾自己写一个系统出黎
唔用免费果 d 系统 (e.g. WordPress)
想问有 d 咩 Security 既问题要留意
净系识 SQL Injection 同 XSS Attack ...
仲有冇其他?

同埋用 PDO 系咪真系可以防到 SQL Inject ...
其实用 prepared statement 就可以防 SQL injection 。

估计你主要都是用 MySQL ,那么选用 mysqli 可能好过 PDO :
http://www.php.net/manual/en/mysqlinfo.api.choosing.php

虽说 PDO 可以容许不同 database 系统共用一套 code ,但实际上每款 database 的 SQL statement 还是有点不同,真正使用时与分别选用专用 API 差不了多小。
如果自己有写 database 相关的 framework ,就不建议使用 PDO 。
因为可自己写 code 包住不同 API 的 code 。

PHP security 相关资讯: http://www.php.net/manual/en/security.php

大概网站的 security 要旨是要适当地检查/显示/使用来自使用者的 data ,并确保 data 来自真正的网站使用者。

小弟曾写过一套 framework ,或可供参考: https://code.google.com/p/myquicknet/

[ 本帖最后由 xianrenb 於 2014-7-10 01:42 PM 编辑 ]

作者: xianrenb   发布时间: 2014-08-01

又有问题
关於 XSS Attack ... ( 其实我只系听过个名 , 但唔识点防 )
google 过 但唔系好明系点
我想问几时要加 htmlentities ?

我试自己写既网站
xxx.com/AAA.php?userid=123
咁我系后面加一段 alert script 落去啦

佢又唔 alert , 将果个 script print 出黎 show 系网站到 ...
即系点

作者: bbsocute   发布时间: 2014-08-01

引用:原帖由 bbsocute 於 2014-7-15 09:26 PM 发表
又有问题
关於 XSS Attack ... ( 其实我只系听过个名 , 但唔识点防 )
google 过 但唔系好明系点
我想问几时要加 htmlentities ?

我试自己写既网站
xxx.com/AAA.php?userid=123
咁我系后面加一段 ...
可以看看 http://en.wikipedia.org/wiki/Cross-site_scripting
以我的理解,某程度上其实即是要小心有可能在网页“显示” script tag 的情况。

方法有好多种,其中一个方法是用 DOM 加 text node ,应该几安全。
http://php.net/manual/en/book.dom.php

htmlentities 一类方法都得,不过较多问题。
有些程式在“文字”放进 database 前加,再取出时就直接显示。
有些程式在“文子”放进 database 前不变,再取出显示前才用。
运作上虽然最终结果一样,但后者会更安全。
理由是或许有某些情况 database 内的资料会被更改,可能被加进不应有的 script tag 。
取出后直接显示就有机会出问题。

而用 DOM 加 text node 的方法,加出来的一定是 text node ,不会是 script tag 加 JavaScript 的东西。

MyQuickNet 中有相关的 code/tools ,可以参考。

作者: xianrenb   发布时间: 2014-08-01

引用:原帖由 xianrenb 於 2014-7-16 09:08 AM 发表


可以看看 http://en.wikipedia.org/wiki/Cross-site_scripting
以我的理解,某程度上其实即是要小心有可能在网页“显示” script tag 的情况。

方法有好多种,其中一个方法是用 DOM 加 text node ,应该几 ...
thanks
但我都想问问红字意思系咪即系唔可以放 <script> ... </script>
如果有就要做呢样野去防 -> http://php.net/manual/en/book.dom.php ?

因为我而家个网页有 <script> style.display ... </script> 既 code

作者: bbsocute   发布时间: 2014-08-01

引用:原帖由 bbsocute 於 2014-7-16 07:24 PM 发表


thanks
但我都想问问红字意思系咪即系唔可以放 ...
如果有就要做呢样野去防 -> http://php.net/manual/en/book.dom.php ?

因为我而家个网页有 style.display ... 既 code
先前我说得不够详细,应该说说这种问题的原因。

人们未有考虑 security 问题之前,如果写网页程式,要输入内容至网站的话,最简单的做法就是照样把资料写进 database ,取出来就直接显示。
这是因为 HTML 没有任何 tag 的话正常就是直接显示给使用者看。
但是黑客们就想到如果文字中有 script tag 的话,“文字”“显示”时就可以加入 script tag 或特别的 JavaScript code 让使用者的浏览器执行。
即是说,对於未有考虑 security 问题的程式员来说,相关代码的确是想显示文字的,但对於黑客来说,就变成可以加入/执行有害 JavaScript 代码。

故此,黑客可以利用表单、 cookie 、 URL 等等方式试图加入有害的 JavaScript code 。

要避免这个问题,只要小心处理要显示的资料及使用正确的显示方式。
例如“<”应变成“&lt;”才加入 HTML 中。

DOM 加 text node 是我喜用的方法。
这种方法与 jQuery 处理 HTML 上资料的方式一致,可以清楚的把 HTML code 及 PHP 分开。
因为 DOM 可以把整个 HTML file 读入后才处理。
可以像 jQuery 般搜寻适当位置才加入资料。

至於你所说的网页上有其他 JavaScript code ,则应该与 XSS 问题无关。

作者: xianrenb   发布时间: 2014-08-01

热门下载

更多