SEOClerks

What is the best way to protect images?



Write the reason you're deleting this FAQ

What is the best way to protect images?

I was wondering what’s the best and effective way to protect images from being stolen, i mean to protect them with something better than a simple text on it like “© Copyright procoder 2016” because we all know that sometimes copyright text can be easily removed. I’m talking about online images in generally, do you use or have you used anything else to protect your images?

Comments

Please login or sign up to leave a comment

Join
idealmike
That's a good question and one that would go hand-in-hand with how to protect your actual content as well from being stolen or copied and plagiarized. Because of course, it's not just your text that can get stolen and reused without your consent, but your actual images too.

So how to protect your images and prevent them from being stolen?

Unfortunately there is no surefire way that will prevent image theft, hot linking or downright plagiarism. That's because of the way the Internet works. Your website is a public property and people can visit it and see your images in their browser. They can also then download those same images to their PC and then re-upload them somewhere else if they wish and there's not much you can do about that.

There are things you can do to minimize this from happening though. And some of the things you can do will put people off but it could come at an expense to you as well. One of these ways is to watermark them but that can sometimes spoil what is otherwise a really nice image. Even if you use a really faint watermark on them. However, this can deter people from using those images if they contain a watermark of your website domain or something on it as they wouldn't want to put that on their own site if it has a watermark on it.

The other way is to state in your terms and conditions that no unauthorized use of your images is allowed without your express written permission. But of course, not everyone will trawl through your t's and c's to make sure this is allowed or not.

Cloudflare can offer hotlink protection but if they download the image to their PC first and then upload it there is nothing Cloudflare can do about that. It only prevents the image from loading if they use the same image source link on their own site.

Another thing you could try is disabling right click with some javascript but this can be got around by disabling that script using element inspector in Firefox or Chrome etc. Or they could still use File > Save page as and all your images and everything else will be saved as (downloaded) into a folder including your images so it's not full proof.

Another idea is to add a DMCA badge (dmca.com/badges.aspx) to your site. DMCA offers free protection for your website which includes a takedown service if you find someone using your images or other content without permission. The DMCA will threaten legal action on your behalf which can scare infringers into taking down your content right away. Putting a DMCA badge on your site can act as a deterrent for serial image stealers and they also offer a free image watermarking service.

There is also a DMCA plugin available for WordPress that inserts the badge on all your website pages automatically.

Those are some of the most commonly used ways to protect your images. You can use one or all of these methods and for all intents and purposes, it will put some people off from doing it. But there will always be those hardcore image thieves that will find a way.

I believe that a small watermark along the bottom of the image is the best thing to do in most cases. Watermarks are hard to remove without cropping the image itself and removing that part or editing them first to try and hide the watermark.

It wont stop it from happening but it means if it does and they don't make any attempt to remove or hide the watermark, people will always know who the original owner of that image is from the watermark that's upon it.

Hope this helps! What is the best way to protect images?



Are you sure you want to delete this post?

procoder
Thanks for your reply Mike! Everything that you said it's true and i know there's no way to stop it, currently i'm using cloudflare hot link protection , and it works but i just wanted to know more about other ways that can be used to protect images. However, i've never used dmca to protect my website content because i don't have anything important on it , but dmca looks perfect in this case also they offer one take down free per year.



Are you sure you want to delete this post?

Webguy2024
I use Cloudflare which offers hot link protection. This protects your images from off-site linking. This is one step for one problem. Copyright issues is a whole other issue that gets into dmca, take down procedures. This is a total pain and can take too much time to get anywhere. Depending on the country trying to do a dmca sometimes it isn't worth the massive effort.



Are you sure you want to delete this post?

procoder
Thanks for your reply! I'm using cloudflare too and they offer some really good services, and i've never tried dmca but i know that cost a lot of time and a lot of money to make "take down" , i was just curious about other ways which can be used to protect images.



Are you sure you want to delete this post?

Lynne
Oh nice, I've never heard of Cloudflare before Webguy2024. How exactly does this work?



Are you sure you want to delete this post?

Webguy2024
Wow, this is a big question! Below are some links for your review. This will be better than me trying to explain everything, way too much info and I don't know where to begin. What is the best way to protect images?

Below is a quick example of what I do with cloudflare to make my content available worldwide and speed up delivery of the pages, (less hops from data center to data center)

http://www.limostars.com (just a domain I have sitting around so, I mask and a 301 redirect with my registrar).

The content of the site goes out to the CDN, content delivery network, worldwide.
see this link: https://www.cloudflare.com/features-cdn/
What is the best way to protect images?


Overview:
https://www.cloudflare.com/overview/



Are you sure you want to delete this post?

Cristian
I used a custom watermark, that's about all that you can do in my opinion. Once something is only is impossible to prevent piracy, people will eventually find a way.
I also don't mind, I'm not like an artist to value my work...



Are you sure you want to delete this post?

procoder
I know it's not easy and i can say it's impossible to stop piracy especially these days,but there are ways to prevent it,anyway i just wanted to see what others are using to protect their own work.



Are you sure you want to delete this post?

MendasDigital
Any protection you can put in place someone can circumvent. After all, in order for a visitor to view the image, you have to give them a copy some way or another, and once it's on their computer, it's under their control. Also alot of the time copy protection measures make the user experience worse, something to think about.

Presently I do not host any images. However, hypothetically if I wanted to make it difficult for someone to save copies of my images, I would probably try to do something like:

- Split the image into pieces. 27 perhaps?
- Use non-descriptive file names (eg: a salted hash) on the pieces so the order isn't discoverable by examining soley the file names.
- Serve the image pieces in the wrong order, use an external javascript file to reorder correctly on mouse over and disorder it again on mouse out.
- Place transparent divs over each image piece, and darken 3 under the mouse on mouse over using the external javascript file.
- Watermark images with my site name.

But I'm not an expert on image protection, or webdesign.



Are you sure you want to delete this post?

Corzhens
I have read in one discussion about Blockai which is a copyright system that you can register with. The registered images will have a certificate of copyright to prove that you are the owner of such image or images. I have checked on the website and it is now named Binded and not Blocki anymore. And the service is free according to the information in the inner webpages. I hope that helps because I am also availing of its free service to protect our pictures.



Are you sure you want to delete this post?

Order Now
Process Time: 0.71658611297607

Possible Duplicate queries found!
MatchCountSQLScript
SELECT * FROM members_ledger WHERE ip = ? AND added>=unix_timestamp(NOW())-864001SELECT querystring, added FROM members_ledger WHERE ip = ? AND added>=unix_timestamp(NOW())-86400

/opt/clerks-staging/docroot/include/functions/includes/security.php 398 fetchMemberLedger() include_once()

SELECT * FROM `questions` as q JOIN categories_faq as c ON q.catid=c.CATID WHERE (q.status=1 OR (q.status=2 AND userid='') ) AND q.quesid='18360'1SELECT q.*, c.seo as CatSEO, c.name as CatName, c.parentid FROM `questions` as q JOIN categories_faq as c ON q.catid=c.CATID WHERE (q.status=1 OR (q.status=2 AND userid='') ) AND q.quesid='18360'

/opt/clerks-staging/docroot/viewfaq.php 496 () ()

SELECT * FROM seoclerks.members WHERE USERID='377074'1SELECT * FROM seoclerks.members WHERE USERID='377074'

/opt/clerks-staging/docroot/include/functions/includes/member.php 445 GetAllUserDetails() ()

SELECT * FROM categories_faq WHERE CATID='55'1SELECT CATID, seo, name, metatitle, h2header, metakeywords, metadescription, metaheader, parentid, image_name FROM categories_faq WHERE CATID='55'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() GetCategorySeoFromType()

SELECT * FROM seoclerks.members WHERE USERID=3770741SELECT googleplus_profile FROM seoclerks.members WHERE USERID=377074

/opt/clerks-staging/docroot/include/functions/main.php 16914 GetGooglePlusProfileFromId() ()

SELECT * FROM ratings_faq as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=18360 LIMIT 51SELECT m.username FROM ratings_faq as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=18360 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM answers a, seoclerks.members b WHERE a.quesid='18360' AND a.userid=b.USERID and b.status='1' AND a.status=1 ORDER BY a.combined_votes DESC, a.date_answered asc1SELECT a.answer, a.USERID, a.upvotes, a.downvotes, a.ansid, a.parentid, a.combined_votes, a.date_answered, b.username, b.userlevel, b.profilepicture FROM answers a, seoclerks.members b WHERE a.quesid='18360' AND a.userid=b.USERID and b.status='1' AND a.status=1 ORDER BY a.combined_votes DESC, a.date_answered asc

/opt/clerks-staging/docroot/viewfaq.php 1245 () ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101182 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101182 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101219 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101219 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101165 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101165 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101210 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101210 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101176 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101176 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101208 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101208 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101209 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101209 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101227 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=101227 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=102112 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=102112 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

SELECT * FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=154375 LIMIT 51SELECT m.username FROM ratings_faqanswers as r, seoclerks.members as m WHERE r.USERID=m.USERID AND r.upvote=1 AND r.PID=154375 LIMIT 5

/opt/clerks-staging/docroot/include/functions/main.php 17159 GetVoters() ()

UPDATE questions SET total_views = total_views + 1 WHERE quesid='18360'1UPDATE questions SET total_views = total_views + 1 WHERE quesid='18360'

/opt/clerks-staging/docroot/include/functions/main.php 1765 update_Faqviewcount() ()

SELECT * FROM questions WHERE quesid!='18360' AND status='1' AND (question like '% protect images?%' OR question like '%protect%' OR question like '%images?%') -- ORDER BY RAND() LIMIT 151SELECT quesid, question, seo, userid FROM questions WHERE quesid!='18360' AND status='1' AND (question like '% protect images?%' OR question like '%protect%' OR question like '%images?%') -- ORDER BY RAND() LIMIT 15

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() ()

SELECT * FROM seoclerks.members WHERE USERID='632' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='632' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='290300' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='290300' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='96912' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='96912' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='59606' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='59606' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM seoclerks.members WHERE USERID='60292' limit 11SELECT profilepicture FROM seoclerks.members WHERE USERID='60292' limit 1

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_member_profilepicture()

SELECT * FROM members_ledger WHERE script='/opt/clerks-staging/docroot/viewfaq.php' AND querystring LIKE '%id=18360%' AND added>=UNIX_TIMESTAMP(NOW())-1200 GROUP BY USERID 1SELECT USERID, username FROM members_ledger WHERE script='/opt/clerks-staging/docroot/viewfaq.php' AND querystring LIKE '%id=18360%' AND added>=UNIX_TIMESTAMP(NOW())-1200 GROUP BY USERID

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() ()

SELECT * FROM categories1SELECT * FROM categories

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() parseRedundantQueriesCache()

select * from categories_software order by name asc1select * from categories_software order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_GetSoftwareCategories()

select * from categories_wanttobuy order by name asc1select * from categories_wanttobuy order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_wantcategories()

select * from categories_wanttotrade order by name asc1select * from categories_wanttotrade order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_get_tradecategories()

SELECT * FROM seoclerks.members WHERE USERID='272.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='272.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='377074.png'1SELECT profilepicture FROM seoclerks.members WHERE USERID='377074.png'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='29365.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='29365.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='306632.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='306632.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='134.png'1SELECT profilepicture FROM seoclerks.members WHERE USERID='134.png'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='486532.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='486532.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

SELECT * FROM seoclerks.members WHERE USERID='600657.jpg'1SELECT profilepicture FROM seoclerks.members WHERE USERID='600657.jpg'

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() getUserProfileImage()

select * from categories_faq order by name asc1select * from categories_faq order by name asc

/opt/clerks-staging/docroot/libraries/adodb5/adodb.inc.php 1899 CacheExecute() insert_GetFaqCategories()

Invalid SQL

count(*)sql1error_msg

Expensive SQL

Tuning the following SQL could reduce the server load substantially
LoadCountSQLMaxMin

Suspicious SQL

The following SQL have high average execution times
Avg TimeCountSQLMaxMin